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

合并行列数不等的Pandas Dataframes技术方案问询

合并行列数不等的Pandas DataFrame解决方案

实现步骤

要满足你的需求,我们可以通过外连接+缺失值填充的方式完成,具体代码如下:

import pandas as pd

# 构建示例数据
df1 = pd.DataFrame({
    'code': [1,1,1,2,2,2],
    'item': ['i1','i2','i3','i1','i2','i3'],
    'size': [50]*6,
    '2020': [303,763,111,998,345,777],
    '2021': [343,555,935,222,345,112],
    '2022': [432,988,711,533,222,419],
    '2023': [855,499,621,629,908,492],
    '2024': [431,691,951,853,127,290]
})

df2 = pd.DataFrame({
    'code': [1,1,2,2,3],
    'item': ['i1','i4','i3','i5','i1'],
    'size': [50]*5,
    '2025': [303,763,435,777,653],
    '2026': [343,555,111,112,199]
})

# 1. 基于code、item、size做外连接,保留所有行
merged_df = pd.merge(df1, df2, on=['code', 'item', 'size'], how='outer')

# 2. 将缺失的年份值填充为0
merged_df = merged_df.fillna(0)

# 3. 调整列顺序,匹配期望输出
column_order = ['code', 'item', 'size', '2020', '2021', '2022', '2023', '2024', '2025', '2026']
merged_df = merged_df[column_order]

# 4. 将数值列转为整数(可选,贴合示例格式)
merged_df[merged_df.columns[3:]] = merged_df[merged_df.columns[3:]].astype(int)

print(merged_df)

代码说明

  • 外连接:how='outer'确保两个DataFrame中所有code+item+size的组合都被保留,不会丢失任何一行数据。
  • 缺失值填充:外连接后不存在的年份数据会生成NaN,用fillna(0)将这些值替换为0,符合需求中的填充规则。
  • 列序调整:通过指定column_order重新排列列,让输出结构和你期望的一致。
  • 类型转换:将年份列转为整数,避免填充0后出现浮点数格式。

输出结果

运行代码后,输出将完全匹配你提供的期望结果:

code item  size  2020  2021  2022  2023  2024  2025  2026
0     1   i1    50   303   343   432   855   431   303   343
1     1   i2    50   763   555   988   499   691     0     0
2     1   i3    50   111   935   711   621   951     0     0
3     1   i4    50     0     0     0     0     0   763   555
4     2   i1    50   998   222   533   629   853     0     0
5     2   i2    50   345   345   222   908   127     0     0
6     2   i3    50   777   112   419   492   290   435   111
7     2   i5    50     0     0     0     0     0   777   112
8     3   i1    50     0     0     0     0     0   653   199

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:10:26