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

如何在Pandas中合并DataFrame并将缺失列值填充为0

解决Pandas按指定键合并并保留目标DataFrame所有行的问题

你当前使用的inner连接只会保留两个DataFrame共有的行,要实现保留b的所有行、缺失值填充0的需求,可以按以下步骤操作:

完整实现代码

import pandas as pd

# 构造示例数据(可替换为你的实际DataFrame)
a = pd.DataFrame({
    'Sector': ['Energy', 'Index Fund', 'Technology', 'Utilities'],
    'Still Have': [10000, 20000, 20000, 5000]
})

b = pd.DataFrame({
    'Sector': ['Communications', 'Consumer Cyclical', 'Consumer Defensive', 'Energy', 'Healthcare', 'Index Fund', 'Materials', 'Technology', 'Utilities'],
    'Ideal Mrkt Value': [15000, 20000, 10000, 5000, 10000, 25000, 5000, 100000, 5000]
})

# 1. 执行右连接,保留b的所有行
merged_df = pd.merge(a, b, on='Sector', how='right')
# 2. 将Still Have列的缺失值填充为0,并转换为整数类型
merged_df['Still Have'] = merged_df['Still Have'].fillna(0).astype(int)
# 3. 调整列顺序(可选,与期望结果对齐)
merged_df = merged_df[['Sector', 'Ideal Mrkt Value', 'Still Have']]

print(merged_df)

输出结果

Sector  Ideal Mrkt Value  Still Have
0      Communications             15000           0
1   Consumer Cyclical             20000           0
2  Consumer Defensive             10000           0
3              Energy              5000       10000
4          Healthcare             10000           0
5          Index Fund             25000       20000
6           Materials              5000           0
7          Technology            100000       20000
8           Utilities              5000        5000

关键说明

  • how='right':指定右连接,会强制保留右表(b)的所有行,左表(a)中无匹配的行对应列会填充为NaN
  • fillna(0):将Still Have列的缺失值替换为0,满足需求中的填充规则
  • astype(int):由于填充NaN后列类型会自动转为float,转换为整数可与原数据类型保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:39