Python中按日期合并重复行并对Views字段求和的实现方法
解决方法:Pandas分组聚合实现行合并与求和
嘿,这个需求在Pandas里简直是家常便饭,用分组聚合就能轻松搞定!我给你一步步拆解怎么做:
核心思路
你需要按Date(日期)和Keywords(关键词)这两个字段作为分组依据,把相同组合的行合并,然后对Views字段进行求和计算。
代码示例
首先假设你的原始DataFrame是这样的(我先构造一个示例数据方便演示):
import pandas as pd # 构造示例数据(模拟你的原始数据) data = { "Date": ["2024-01-01", "2024-01-01", "2024-01-02", "2024-01-02", "2024-01-02"], "Keywords": ["Python", "Python", "Data Analysis", "Python", "Data Analysis"], "Views": [100, 150, 80, 200, 120] } df = pd.DataFrame(data)
接下来执行分组求和的核心代码:
# 按Date和Keywords分组,对Views求和,同时保持分组列为普通列 result_df = df.groupby(["Date", "Keywords"], as_index=False)["Views"].sum()
执行后得到的result_df就是你要的目标结果:
| Date | Keywords | Views |
|---|---|---|
| 2024-01-01 | Python | 250 |
| 2024-01-02 | Data Analysis | 200 |
| 2024-01-02 | Python | 200 |
代码解释
groupby(["Date", "Keywords"]):指定分组的两个字段,确保只有日期相同且关键词相同的行会被分到同一组as_index=False:这个参数很重要,它会让Date和Keywords保持为结果DataFrame的普通列,而不是成为索引["Views"].sum():明确只对Views列执行求和操作,避免其他无关字段被错误聚合
额外扩展
如果你的DataFrame还有其他需要聚合的字段(比如Clicks点击量),可以用agg()方法同时处理多个字段:
# 同时对Views和Clicks求和 result_df = df.groupby(["Date", "Keywords"], as_index=False).agg({ "Views": "sum", "Clicks": "sum" })
如果担心分组后日期排序被打乱,可以再加一行排序代码:
# 确保结果按日期升序排列 result_df = result_df.sort_values("Date")
内容的提问来源于stack exchange,提问作者Notna
相关产品推荐
相关产品推荐

