如何用Python按MD列和月份合并DataFrame多行?
Python实现按MD列和月份合并多行数据
假设你的数据是包含日期列、MD列及其他数值列的表格结构,以下是用pandas实现合并的具体方案:
步骤1:导入依赖库
import pandas as pd
步骤2:读取/构造数据
替换成你实际的读取方式(比如pd.read_excel或pd.read_csv),这里先模拟示例数据:
# 示例数据,可替换为你的真实数据 data = { "date": ["2024-01-03", "2024-01-15", "2024-01-28"], "MD": ["MD001", "MD001", "MD001"], "sales": [1200, 800, 1500], "visits": [30, 25, 40] } df = pd.DataFrame(data)
步骤3:提取月份分组依据
将日期列转为日期格式,并提取年份+月份作为分组维度:
df["date"] = pd.to_datetime(df["date"]) # 新增YYYY-MM格式的月份列 df["month"] = df["date"].dt.to_period("M")
步骤4:按MD和月份分组聚合
根据你的需求定义各列的聚合规则,比如数值列求和、非数值列保留首个值:
# 自定义聚合规则,可根据实际需求调整 agg_rules = { "date": "first", # 保留该组第一条记录的日期 "sales": "sum", # 对sales列求和 "visits": "sum" # 对visits列求和 } # 执行分组合并 merged_df = df.groupby(["MD", "month"], as_index=False).agg(agg_rules)
步骤5:查看合并结果
print(merged_df)
你可以根据实际列名和业务需求修改agg_rules,比如需要取均值用"mean"、取最大值用"max",或者对文本列用"first"保留首个内容。
内容的提问来源于stack exchange,提问作者Khaled
相关产品推荐
相关产品推荐

