gpt4 book ai didi

Python pandas 数据框,逐行聚合直至停止标准

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:09 24 4
gpt4 key购买 nike

我想对列中的特定行进行求和,并仅使用聚合值创建一个新的数据框。例如,原始帧看起来像(A=ID,B=数据[yyyymmdd],C=小时+分钟[hhmm],D=值)

    A         B     C    D
11035 20190101 0010 1.1
11035 20190101 0020 1.9
11035 20190101 0030 3.3
11035 20190101 0040 1.0
11035 20190101 0050 2.9
11035 20190101 0100 0.5
11001 20190109 0110 0.0
11001 20190109 0120 0.2
11001 20190109 0130 1.5
11001 20190109 0140 1.2
11001 20190109 0150 1.9
11001 20190109 0200 4.5
.
.
.

最终数据帧应仅包含整点的行(即 0100、0200...),但值应包含前 6 个值的总和(例如,对于 0100:从 0010 到 0100 的总和)。上面示例的输出数据框应如下所示:

    A         B     C     D
11035 20190101 0100 10.7
11001 20190109 0200 9.3
.
.
.

如何最有效地编写此练习的代码?

非常感谢您的帮助!

最佳答案

@roganjosh 建议的更好方法 - 谢谢

df_new=df.groupby(['A','B']).agg({'C': 'max', 'D': 'sum'}).reset_index().sort_values('C')
print(df_new)

A B C D
11035 20190101 0100 10.7
11001 20190109 0200 9.3

编辑答案中的每个问题

df.groupby(['A','B',(df.C%100==0).cumsum().shift().fillna(0)]).\
agg({'D':'sum','C':lambda x: x[x%100==0]}).reset_index(level=[0,1]).sort_values('A',ascending=False).reset_index(drop=True)
A B D C
0 11035 20190101 10.7 100
1 11035 20190101 7.7 200
2 11001 20190109 9.3 200

关于Python pandas 数据框,逐行聚合直至停止标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54438559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com