【问题标题】:Pandas groupby over consecutive duplicatesPandas groupby 连续重复
【发布时间】:2021-12-30 20:00:50
【问题描述】:

给定一张桌子,

Id Value
1 1
2 2
2 3
3 4
4 5
4 6
2 8
2 3
1 1

而不是简单的groupby('Id').agg({'Value':'sum'}) 对所有实例执行聚合并生成一个只有四行的表,我希望结果只对附近的实例进行聚合,从而保持表的创建顺序。

预期的输出如下,

Id Value
1 1
2 5
3 4
4 11
2 11
1 1

如果不能使用 pandas groupby,任何其他类型的技巧也将不胜感激。

注意:如果上面的示例没有帮助,基本上我想要的是以某种方式通过聚合“值”来压缩表。聚合应该只在重复的 'Id' 上完成,它们一个接一个地出现。

【问题讨论】:

  • 您好,我在搜索引擎上写 groupby over Continuous duplicates 并立即得到您查询的答案;你试过吗?
  • 不确定stackoverflow.com/questions/50906756/… 是否有帮助。正如两者都没有提到的,谷歌是你最好的朋友。

标签: python pandas dataframe group-by


【解决方案1】:

不幸的是,eshirvana 和 wwnde 的答案似乎不适用于长数据集。受到 wwnde 回答的启发,我找到了一种解决方法,

# create a series referring to group of identicals
new=[]
i=-1
for item in df.Id:
    if item !=seen:
        i+=1
    seen=items
    new.append(i)

df['temp']=new

现在,我们对 'temp' 列进行分组。

df.groupby('temp').agg({'Id':max, 'Value':sum}).reset_index(drop=True)


    

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2019-03-16
    • 2016-02-20
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2021-02-24
    相关资源
    最近更新 更多