我正在使用to_csv将Multiindex DataFrame写入csv文件。csv文件的一列包含元组中的多索引,例如:
('a', 'x')
('a', 'y')
('a', 'z')
('b', 'x')
('b', 'y')
('b', 'z')
但是,我希望能够将Multiindex输出到两列而不是一列的元组,例如:
a, x
, y
, z
b, x
, y
, z
看起来tupleize_cols
可以为列实现此目的,但对于行则没有这样的选择。有没有办法做到这一点?
我认为这可以做到
In [3]: df = DataFrame(dict(A = 'foo', B = 'bar', value = 1),index=range(5)).set_index(['A','B'])
In [4]: df
Out[4]:
value
A B
foo bar 1
bar 1
bar 1
bar 1
bar 1
In [5]: df.to_csv('test.csv')
In [6]: !cat test.csv
A,B,value
foo,bar,1
foo,bar,1
foo,bar,1
foo,bar,1
foo,bar,1
In [7]: pd.read_csv('test.csv',index_col=[0,1])
Out[7]:
value
A B
foo bar 1
bar 1
bar 1
bar 1
bar 1
使用索引重复来编写(虽然有点骇人听闻)
In [27]: x = df.reset_index()
In [28]: mask = df.index.to_series().duplicated()
In [29]: mask
Out[29]:
A B
foo bar False
bar True
bar True
bar True
bar True
dtype: bool
In [30]: x.loc[mask.values,['A','B']] = ''
In [31]: x
Out[31]:
A B value
0 foo bar 1
1 1
2 1
3 1
4 1
In [32]: x.to_csv('test.csv')
In [33]: !cat test.csv
,A,B,value
0,foo,bar,1
1,,,1
2,,,1
3,,,1
4,,,1
回读实际上有点棘手
In [37]: pd.read_csv('test.csv',index_col=0).ffill().set_index(['A','B'])
Out[37]:
value
A B
foo bar 1
bar 1
bar 1
bar 1
bar 1
获取熊猫
问题内容: 为什么在多索引DataFrame时不能使用偏移量? 例如,使用: 如果我尝试使用偏移量进行分组和滚动,则会显示“ ValueError:窗口必须为整数 ”: 并不是说以下这些变体可以满足我的需求,但是请注意对作品进行分组和滚动: 我可以在DataFrame的单索引子集上使用偏移量滚动: 如果确实不可能在多索引DataFrame上进行偏移滚动,那么将零应用于每个0级索引项的最有效的解决方
我试图将CSV字符串导出到D3 Web应用程序,但是命令坚持向数据添加尾随0,这阻止了D3的正确使用。 这里有一个简单的例子来说明这个问题。 我的(简化)数据帧是: 包含一个,如下所示: 然后根据这个答案,我运行要获取我想要的格式,请执行以下操作: 现在,包含一个
问题内容: 我试图读取通过via 创建的数据框,但得到了。我认为这可能与索引为MultiIndex的事实有关,但我不确定如何处理。 调用了55k行的原始数据框,并通过以下方式创建了该数据框: 如果要使用它,这是输出。 当我对这小部分数据(5行)进行处理时,我得到一个。 这是完整的堆栈: 但是,当我在整个数据帧(55k行)上执行此操作时,我得到一个无效的指针错误,并且IPython内核死亡。有任何想
问题内容: 经过一些分组后,我创建了一个具有MultiIndex的DataFrame: 如何在MultiIndex前面添加一个级别,以便将其转换为类似以下内容: 问题答案: 一种使用以下代码完成此操作的好方法: 甚至更短的方法: 这可以推广到许多数据框架,请参阅docs。
我在试着按照这里的一些答案做,但是当我设置 我收到错误。我做错了什么? 我正在运行pandas。