在 python pandas 中,我有一个看起来像这样的数据框:
[{"origin": ["*"],
"responseHeader": ["X-Requested-With", "Access-Control-Allow-Origin", "Content-Type"],
"method": ["GET", "HEAD", "POST"],
"maxAgeSeconds": 3600}]
某些日期重复,具有不同的计数值。我想将这些值合并为一行,如下所示:
> df
count
date
2021-04-03 23.0
2021-04-04 12.0
2021-04-04 10.0
2021-04-05 42.0
2021-04-06 39.0
...
如果有帮助,数据源是 CSV 文件。可能有一种方法可以在 for 循环中执行此操作,但我想知道是否可以使用 pandas 中的函数来完成此操作?谢谢。
答案 0 :(得分:1)
在这种情况下,您可以按索引分组并对值求和
>>> result = df.groupby(df.index)['count'].sum()
>>> result
date
2021-04-03 23.0
2021-04-04 22.0
2021-04-05 42.0
2021-04-06 39.0
Name: count, dtype: float64
答案 1 :(得分:0)
您可以使用groupby():
new_df = df.groupby(['date']).sum()
答案 2 :(得分:0)
从您的示例数据中可以看出,date
应该是行索引而不是数据列。因此,您需要额外的步骤将 groupby()
和 sum()
结果(Pandas 系列)转换回 .to_frame()
的数据帧,如下所示:
df.groupby('date')['count'].sum().to_frame(name='count')
输出:
count
date
2021-04-03 23.0
2021-04-04 22.0
2021-04-05 42.0
2021-04-06 39.0