【发布时间】:2015-10-20 10:30:01
【问题描述】:
因此,给定一个多索引数据框,我想只返回满足多索引中较低索引所有级别条件的行。这是一个小的工作示例:
df = pd.DataFrame({'a': [1, 1, 2, 2], 'b': [1, 2, 3, 4], 'c': [0, 2, 2, 2]})
df = df.set_index(['a', 'b'])
print(df)
出来:
c
a b
1 1 0
2 2
2 3 2
4 2
现在,我想返回 c > 1 的条目。例如,我想做类似的事情
df[df[c > 1]]
出来:
c
a b
1 2 2
2 3 2
4 2
但我想得到
出来:
c
a b
2 3 2
4 2
对如何以最有效的方式做到这一点有任何想法吗?
【问题讨论】:
-
你的意思是 c>1 和 a=2?
-
是的,但我不想指定
a == 2。这只是一个玩具示例。 -
你能澄清你在问什么吗?我不明白你问的不是
df[df[c > 1]]得到的? -
我希望
a索引占主导地位,因此,如果唯一值a(在本例中为a==2)下的任何条目具有c的对应值,则c>1,然后删除与a索引的该值关联的所有条目。因此,类似于 `df[df[c > 1 for all a == x] for all x in a] 。
标签: python pandas boolean multi-index booleanquery