在'pandas'中获取另一个变量的比例为另一个变量

时间:2014-03-10 21:16:51

标签: python pandas dataframe

我在pandas中有一个数据框,其中包含一列'A'和一个布尔值的列'B',并希望找到'A'的值,其中至少有一个数字n,对于'B',行的结果为True。

我能接受的最接近的事情是

df.query('B == True')['A'].value_counts()

然后查看数字以查看哪些数字大于n。

是否有更多的pythonic(或更多ailuropodian)方法(甚至可能只返回那些计数大于n或者比例为True的方法)?

1 个答案:

答案 0 :(得分:1)

这听起来类似于过滤器:

In [11]: df = pd.DataFrame([[1, True], [1, True], [2, False], [2, True]], columns=['A', 'B'])

In [12]: g = df.groupby('A')

In [13]: g.filter(lambda x: x['B'].sum() > 1)
Out[13]: 
   A     B
0  1  True
1  1  True

要找到A的值,其中这是真的,你可以使用sum agg方法:

In [21]: res = g.B.sum() > 1

In [22]: res[res]
Out[22]: 
A
1    True
Name: B, dtype: bool

In [23]: res[res].index
Out[23]: Int64Index([1], dtype='int64')