基于主DataFrame匹配多DataFrame并汇总Value的技术实现需求
多DataFrame与主卖家表匹配并生成日期排序报表方案
实现步骤
1. 合并所有子DataFrame
先将包含交易数据的DF1、DF2、DF3合并,仅保留需要的Seller、Value、Date字段,剔除无关数据:
import pandas as pd # 合并子DataFrame,仅保留目标字段 combined_df = pd.concat([df1[['Seller', 'Value', 'Date']], df2[['Seller', 'Value', 'Date']], df3[['Seller', 'Value', 'Date']]], ignore_index=True)
2. 与主卖家表匹配
用主表DF_Master_seller做左连接,确保主表内所有卖家都被保留,无交易记录的卖家对应值填充为0:
# 基于Seller字段左连接主表与合并后的子表 merged_df = pd.merge(DF_Master_seller, combined_df, on='Seller', how='left') # 空值填充为0,统一无交易数据的表现形式 merged_df['Value'] = merged_df['Value'].fillna(0)
3. 转换为日期列的宽表
通过透视表将数据转换为「行=卖家,列=日期,值=交易金额」的结构:
pivot_df = merged_df.pivot(index='Seller', columns='Date', values='Value').fillna(0)
4. 按日期排序列
将日期列转换为datetime类型后重新排序,保证列按时间顺序排列:
# 把列名转为datetime类型并排序 sorted_dates = sorted(pivot_df.columns, key=lambda x: pd.to_datetime(x)) pivot_sorted_df = pivot_df[sorted_dates]
5. 添加总计行
计算每个日期列的总和,作为新行追加到DataFrame末尾:
# 生成总计行 total_row = pivot_sorted_df.sum().to_frame().T total_row.index = ['总计'] # 合并总计行到最终表 final_df = pd.concat([pivot_sorted_df, total_row])
最终效果
final_df以卖家为行索引,按时间顺序排列的日期为列,每个单元格对应卖家在该日期的交易金额,最后一行是各日期的交易总计值。
内容的提问来源于stack exchange,提问作者harry
相关产品推荐
相关产品推荐

