【发布时间】:2021-03-30 02:40:22
【问题描述】:
我有一个包含 3 个索引的多索引数据框,我需要获取前两个级别是某些元组的所有行。
我的失败尝试是
index=pd.MultiIndex.from_tuples([(1,2,"A"), (1,2,"B"), (1,3,"A"), (1,3,"B"), (10,20,"A"), (5,3,"B")], names=['first', 'second', "third"])
df=pd.DataFrame(np.random.randn(6, 2), index=index)
## Pairs of first and second level I want to retrieve
pairs=[(1,2), (5,3)]## Actually retrieved from another dataframe, but not important here
pairs=[tuple(list(pair)+[slice(None)]) for pair in pairs]
df.loc[pairs]
我收到以下错误
TypeError: unhashable type: 'slice'
但是如果我这样做 df.loc[(1,2, slice(None))] 它可以工作,但不会像 df.loc[[(1,2, slice(None)), (5,3, slice(None))]] 那样工作
我正在尽力提高效率,因为数据框 df 总是有超过 196560000 行。
我真的不知道还能做什么,我读了很多书,非常迷茫。谢谢!
编辑:
我不想检索 (1, 3) 或 (5,2) 的组合。检索到的行应该是这样的
0 1
first second third
1 2 A -0.627749 -1.560681
B 0.053260 0.278046
5 3 B 0.197331 -0.575833
【问题讨论】:
标签: python-3.x pandas dataframe multi-index