当前位置: 代码迷 >> python >> 在“ pandas”中获取对另一个变量为真的每个变量的比例
  详细解决方案

在“ pandas”中获取对另一个变量为真的每个变量的比例

热度:120   发布时间:2023-06-21 10:50:44.0

我在pandas中有一个数据框,其中包括一列“ A”和一个布尔值列“ B”,并希望查找至少有一定数量n的行的True的“ A”值。 B”。

我能想到的最接近的是

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

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

是否有一种更Python化(或更多风俗)的方式(也许甚至他们只返回计数大于n或真比例的方法)?

这听起来类似于过滤器:

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

要查找仅此为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')
  相关解决方案