【问题标题】:Pandas Sequebtial Count of members within a group and the sumPandas 组内成员的顺序计数和总和
【发布时间】:2021-07-29 03:02:52
【问题描述】:

如果我想在一个组中进行连续计数,我可以这样做

df['GID'] = df.groupby(['G_COL1','G_COL2]).cumcount()

但是,我无法弄清楚如何生成包含组内值总数的列。因此,如果该组有三个成员 df['GID'] 将包含 0,1 & 2 并且 df['COUNT'] 将包含三个成员中每个成员的值 3

【问题讨论】:

  • 使用.transform('count')
  • 正是我需要的答案。谢谢

标签: pandas dataframe group-by


【解决方案1】:
df["count_zeros"] = pd.DataFrame((df["GID"]==0)).cumsum()
df["COUNT"] = df.groupby("count_zeros").transform(lambda x: len(x))["GID"]

我认为上面给出了你想要的。每当一个新组开始发生时,GID 列从零开始,然后我们计算有多少个零,即我们有 len 的新组“开始”。

正如 Scott Boston 所说,

df["COUNT"] = df.groupby("count_zeros")['GID'].transform('count')

效果很好,看起来很棒:)

【讨论】:

  • 试试:df["COUNT"] = df.groupby("count_zeros")['GID'].transform('count')
  • 这是一个很好的建议。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多