如何合并两个销售数据集,按指定规则排序后剔除Shop与Segment列?
这个需求完全可以实现,以下是基于Python pandas的实现方案:
实现步骤
- 首先导入pandas库,将你手头的两个数据集读取为DataFrame对象,我们记第一个数据集为
df1,第二个数据集为df2 - 执行以下代码完成合并排序:
import pandas as pd # 提取Shop列的前缀(去掉末尾所有数字)作为分组排序依据 df1['shop_prefix'] = df1['Shop'].str.replace(r'\d+$', '', regex=True) df2['shop_prefix'] = df2['Shop'].str.replace(r'\d+$', '', regex=True) # 新增排序标识,保证第一个数据集的行排在同分组第二个数据集行的前面 df1['sort_flag'] = 0 df2['sort_flag'] = 1 # 合并两个数据集 merged_df = pd.concat([df1, df2], ignore_index=True) # 按规则排序:先按商店前缀、再按销售渠道、最后按排序标识排序 merged_df = merged_df.sort_values(by=['shop_prefix', 'Segment', 'sort_flag'], ignore_index=True) # 移除不需要的列,得到最终结果 result_df = merged_df.drop(columns=['Shop', 'Segment', 'shop_prefix', 'sort_flag'])
- 如需导出结果可以使用以下代码:
# 导出为CSV文件 result_df.to_csv('合并结果.csv', index=False) # 导出为Excel文件 result_df.to_excel('合并结果.xlsx', index=False)
方案说明
该方案不依赖两个原始数据集的行顺序,会自动匹配商店前缀分组排序,完全满足无数字后缀的商店行排在对应带数字后缀商店行上方的要求。
内容的提问来源于stack exchange,提问作者nikita1221
相关产品推荐
相关产品推荐

