【问题标题】:Pandas check if a value exists using multiple conditions within group and count value if truePandas 使用组内的多个条件检查值是否存在,如果为真,则计算值
【发布时间】:2021-01-16 10:47:35
【问题描述】:

我已根据我确定的条件创建了一个布尔列。我想通过计算每组的 True 值更进一步。

我有

group = df.groupby('id')
df.loc[:,'Match'] = (group['flag'].transform(lambda x: x.eq(0).any()))&(group['flag'].transform(lambda x: x.eq(1).any()))

这给了我 True 和 False 值。然后如何计算每个 id 填充的 True 值的数量?

样本数据:

id   flag   Match  Count Match
123  0      True    3
123  1      True    3
123  1      True    3
567  0      False   0
567  0      False   0

上面创建了匹配列,然后我想创建计数匹配列。

【问题讨论】:

  • 您应该提供一些示例数据。
  • 我添加了一些示例数据@QuangHoang
  • ID 123 有 3 个 True,但是您的计数匹配列中只有 2 个 id 123。这是有原因的吗?还是错字?
  • 打错字了,我改正了@CameronRiddell

标签: python pandas group-by transform


【解决方案1】:

是吗:

df['Count Match'] = df['Match'].astype(int).groupby(df['id']).transform('sum')

【讨论】:

  • 列分配中缺少右括号。试图为你编辑它,但它只有 1 个字符的变化。 df['Count Match']
猜你喜欢
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2018-08-04
  • 2020-12-20
  • 2016-04-06
  • 1970-01-01
  • 2018-07-02
  • 2023-03-13
相关资源
最近更新 更多