有人知道是否可以使用DataFrame.loc
方法从MultiIndex
中进行选择吗?我有以下DataFrame
,希望能够访问位于Dwell
列中的值,索引为('at', 1)
、('at', 3)
、('at', 5)
等(非顺序)。
我希望能够做一些类似data.loc[['at',[1,3,5]], 'Dwell']
的事情,类似于常规索引的data.loc[[1,3,5], 'Dwell']
语法(返回Dwell
值的3个成员序列)。
我的目的是选择数据的任意子集,仅对该子集执行一些分析,然后使用分析结果更新新值,我计划使用相同的语法为这些数据设置新值,因此链接选择器在这种情况下实际上不起作用。
下面是我正在使用的DataFrame
的一部分:
Char Dwell Flight ND_Offset Offset
QGram
at 0 a 100 120 0.000000 0
1 t 180 0 0.108363 5
2 a 100 120 0.000000 0
3 t 180 0 0.108363 5
4 a 20 180 0.000000 0
5 t 80 120 0.108363 5
6 a 20 180 0.000000 0
7 t 80 120 0.108363 5
8 a 20 180 0.000000 0
9 t 80 120 0.108363 5
10 a 120 180 0.000000 0
5条答案
按热度按时间7vhp5slm1#
如果您使用的是0.14版本,您可以简单地将一个元组传递给
.loc
,如下所示:cx6n0qe32#
尝试横截面索引:
qltillow3#
通常,MultiIndex键采用元组的形式。例如:
在您的示例中,您必须传递一个元组的列表。例如,下面的代码可以正常工作:
ldioqlga4#
.loc是多索引最好的朋友。但是,您必须了解loc在多索引上的工作方式。在多索引上使用loc时,必须在loc中指定每隔一个索引值,例如:
然而,正如您可能想象的那样,在您不知道所有其他值是什么的情况下,这可能会很痛苦,因此我们当然可以使用':'
希望这有帮助!
yb3bgrhw5#
我也遇到过同样的问题。
df [(列索引1,列索引2)][(列索引1,列索引2,列索引3)]:没问题
定义函数位置[("列索引1","列索引2","列索引3")],[("列索引1","列索引2")]:显示以下错误消息:键错误:"[索引]中没有任何[索引(['rowindex1','rowindex2',\n 'rowindex3'],\n数据类型='对象')]"
我试过把我的索引tupke放在一个列表里面,结果是可以的:
我不知道为什么,也许是因为索引中添加了一些未显示的"\n"?