有谁知道是否可以使用DataFrame.loc方法从MultiIndex中进行选择?我有以下DataFrame,并且希望能够访问位于“居住”列中的值,位于('at', 1)
,('at', 3)
,('at', 5)
的索引,依此类推(非) -sequential)。
我希望能够执行data.loc[['at',[1,3,5]], 'Dwell']
之类的操作,类似于常规索引的data.loc[[1,3,5], 'Dwell']
语法(返回3个成员的Dwell值系列)。
我的目的是选择数据的任意子集,仅对该子集执行某些分析,然后使用分析结果更新新值。我计划使用相同的语法为这些数据设置新值,因此链接选择器在这种情况下不会真正起作用。
以下是我正在使用的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
谢谢!
答案 0 :(得分:30)
如果您使用的是版本0.14,则只需将元组传递给.loc
,如下所示:
df.loc[('at', [1,3,4]), 'Dwell']
答案 1 :(得分:9)
尝试cross-section索引:
In [68]: df.xs('at', level='QGram', drop_level=False).loc[[1,4]]
Out[68]:
Char Dwell Flight ND_Offset Offset
QGram
at 1 t 180 0 0.108363 5
4 a 20 180 0.000000 0