pandas根据条件选择行

时间:2015-04-23 17:50:31

标签: indexing pandas

假设有一个pandas数据帧

d = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]})

如何选择所有行'a'>1, 'b'<6 and 7<='c'<=9

这应该导致这种情况等同于数据帧的第二行。 在解决方案中假设具有k个密钥的通用数据帧。

2 个答案:

答案 0 :(得分:2)

您可以使用query

In [233]: d.query('a>1 and b<6 and 7<=c<=9')
Out[233]:
   a  b  c
1  2  5  8

另外,你可以做到

In [234]: d[(d.a>1) & (d.b<6) & (d.c>=7) & (d.c<=9)]
Out[234]:
   a  b  c
1  2  5  8

而且,pd.eval()适用于包含大数组的表达式

In [235]: d[pd.eval('(d.a>1) & (d.b<6) & (d.c>=7) & (d.c<=9)')]
Out[235]:
   a  b  c
1  2  5  8

答案 1 :(得分:1)

您可以直接索引数据框,将所有条件放在括号内:

d[(d.a > 1) & (d.b < 6) & (d.c <= 9) & (d.c >= 7)]

对于'或'条件,在条件之间使用管道|