使用Python Pandas合并Excel列并合并多行的实现求助
解决Excel数据分组合并问题
原始数据
Name Segment revenue Product_id Status Order_count days_ago Dummy High value 1000 P_ABC Yes 2 30 days ago Dummy High value 1000 P_CDE No 1 20 days ago Dummy High value 1000 P_EFG Yes 3 10 days ago Tammy Low value 50 P_ABC No 0 100 days ago Tammy Low_value 50 P_DCF Yes 1 10 days ago
问题分析
你的代码仅完成了分组筛选,未实现同一分组多行合并为一行的核心需求,且忽略了Order_count是数值类型,直接拼接会触发类型错误。
完整实现代码
import pandas as pd # 读取Excel文件(替换为你的文件路径) df = pd.read_excel("your_input_file.xlsx") # 步骤a:拼接指定列,注意将数值型的Order_count转为字符串 df["concat_value"] = df["Product_id"] + " - " + df["Status"] + " - " + df["Order_count"].astype(str) # 步骤b+c:分组并合并同组数据 df_merged = df.groupby(["Name", "Segment", "revenue"], as_index=False).agg( # 将同组的concat_value用分号分隔合并 concat_value=("concat_value", "; ".join), # 同组的days_ago也按同样方式合并,可根据需求调整(比如取最近日期) days_ago=("days_ago", "; ".join) ) # 输出到Excel df_merged.to_excel("merged_output.xlsx", index=False)
预期输出结果
| Name | Segment | revenue | concat_value | days_ago |
|---|---|---|---|---|
| Dummy | High value | 1000 | P_ABC - Yes - 2; P_CDE - No - 1; P_EFG - Yes - 3 | 30 days ago; 20 days ago; 10 days ago |
| Tammy | Low value | 50 | P_ABC - No - 0 | 100 days ago |
| Tammy | Low_value | 50 | P_DCF - Yes - 1 | 10 days ago |
关键说明
- 类型转换:
Order_count是整数类型,必须转为字符串后才能和其他文本列拼接,否则会报错。 - 聚合方式:使用
agg方法指定每个列的合并规则,这里用;.join将同组的多行内容合并为单个字符串,你可以根据需求替换为其他分隔符(比如逗号)。 - 分组保留索引:
as_index=False确保分组键(Name、Segment、revenue)作为普通列保留在结果中,而非索引。
内容的提问来源于stack exchange,提问作者The Great
相关产品推荐
相关产品推荐

