You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于两个Pandas DataFrame生成指定样式的透视表/表格结果

需求说明

现有两个Pandas DataFrame,定义如下:

df1 = pd.DataFrame({'Item':['a','b','c','a1','b1','c1','a2','b2','c2','a3','b3','c3'], 
    'b':[1,2,3,11,21,31,12,22,32,13,23,33]})

df2 = pd.DataFrame({'S':[200], 'M':[300],'L':[200], 'XL':[300],'2XL':[200], '3XL':[300]})

需要生成如下样式的表格:

ItemQtySMLXL2XL3XLtotal
a200200*1300*1200*1300*1200*1300*11500
b300200*2
c400200*3
a1200
b1100
c1400
a2100
b2104
c2402
a3150
b3140
c3170
total???????

规则说明:

  • 各尺码列(S、M、L、XL、2XL、3XL)的值为df2对应尺码数值 × df1中对应Item的b列数值
  • 表格需包含Qty列、每行的total列、最后一行的总计行

实现代码

import pandas as pd

# 定义原始DataFrame
df1 = pd.DataFrame({'Item':['a','b','c','a1','b1','c1','a2','b2','c2','a3','b3','c3'], 
    'b':[1,2,3,11,21,31,12,22,32,13,23,33]})

df2 = pd.DataFrame({'S':[200], 'M':[300],'L':[200], 'XL':[300],'2XL':[200], '3XL':[300]})

# 构造示例中的Qty列数据
qty_data = [200, 300, 400, 200, 100, 400, 100, 104, 402, 150, 140, 170]
df1['Qty'] = qty_data

# 提取尺码对应的数值
size_values = df2.iloc[0].to_dict()

# 生成各尺码列:计算df2数值与df1中b值的乘积
for size, val in size_values.items():
    df1[size] = df1['b'] * val

# 计算每行的total:所有尺码列的和
df1['total'] = df1[list(size_values.keys())].sum(axis=1)

# 构造总计行
total_row = pd.DataFrame({
    'Item': ['total'],
    'Qty': [df1['Qty'].sum()],
    **{size: [df1[size].sum()] for size in size_values.keys()},
    'total': [df1['total'].sum()]
})

# 合并原数据和总计行,调整列顺序
result_df = pd.concat([df1, total_row], ignore_index=True)
column_order = ['Item', 'Qty', 'S', 'M', 'L', 'XL', '2XL', '3XL', 'total']
result_df = result_df[column_order]

# 若需要显示"200*1"这类表达式而非计算结果,取消以下注释
# for size, val in size_values.items():
#     result_df[size] = result_df.apply(lambda x: f"{val}*{x['b']}" if x['Item'] != 'total' else x[size], axis=1)

# 打印结果
print(result_df.to_string(index=False))

代码说明

  1. 先给df1添加示例中的Qty列数据;
  2. 提取df2的尺码数值,遍历生成每个尺码列,值为尺码数乘df1的b列;
  3. 计算每行total为所有尺码列的和;
  4. 构造总计行,计算各列总和并追加到表格末尾;
  5. 调整列顺序匹配示例格式;
  6. 如需显示乘积表达式而非计算结果,取消对应代码块的注释即可。

内容的提问来源于stack exchange,提问作者abdullah qureshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:35:57