我有一个带有列“ A”和“ B”的多索引数据框。
有没有一种方法可以通过在多索引的一列上进行过滤而不选择将索引重新设置为单列索引来选择行?
例如。
# has multi-index (A,B)
df
#can I do this? I know this doesn't work because the index is multi-index so I need to specify a tuple
df.ix[df.A ==1]
一种方法是使用get_level_values
Index方法:
In [11]: df
Out[11]:
0
A B
1 4 1
2 5 2
3 6 3
In [12]: df.iloc[df.index.get_level_values('A') == 1]
Out[12]:
0
A B
1 4 1
在0.13,你就可以使用xs
与drop_level
参数:
df.xs(1, level='A', drop_level=False) # axis=1 if columns
注意:如果这是列MultiIndex而不是索引,则可以使用相同的技术:
In [21]: df1 = df.T
In [22]: df1.iloc[:, df1.columns.get_level_values('A') == 1]
Out[22]:
A 1
B 4
0 1
问题内容: 因此,我了解到可以使用DataFrame.groupby而不用使用MultiIndex进行子采样/横截面。 另一方面,当我在DataFrame上具有MultiIndex时,仍然需要使用DataFrame.groupby进行子采样/横截面。 那么,除了在打印时非常有用和漂亮地显示层次结构之外,MultiIndex有什么好处? 问题答案: 在pandas 0.4版本中引入了分级索引(也称为
问题内容: 我这样制作数据框。 我想通过使用一些熊猫方法将索引转换为此(例如set_index,stack 、、) 我怎样才能做到这一点? 问题答案: 我认为你需要与重塑,然后交换在水平由列由去年的排序列: 用另一种解决方案和:
我想知道是否可以从一个多索引级别中选择多个项目? 假设我有一个大熊猫数据帧,如下所示: 我想使用dataframe的lvl_2选择特定列 尝试类似< code>df.xs(['c ',' e'],level='lvl_2 ',axis=1)的内容会导致错误: 关键错误:“e”
如果我有一个多级列索引: 我如何才能降低该指数的“a”级,因此我最终得到:
当我将函数应用于Groupby对象的多个列时,Pandas会抛出一个Future Warning。它建议使用列表作为索引,而不是元组。一个人会怎么做?
我想更改我的熊猫数据框架中的一个值,我想我误解了索引的工作方式。 我得到输出 我想将df中的值0.665873更改为1。我试过了 但我得到了错误 我试图用示例数据帧复制该问题,但无济于事。 我认为问题在于,当我使用实际数据时,我得到了一系列的输出,但当我使用实践数据时,得到了一个浮点。为什么我得到的是这个系列而不是浮点0.665873?