合并DataFrame后如何仅填充新增列的空值(Null)
仅填充Pandas合并后新增列的空值,保留原有列空值的方法
问题场景
合并两个DataFrame的代码如下:
import pandas as pd df = pd.DataFrame({'ID': [1,2,3,4], 'Column A': [2, 3, 2, 3], 'Column B': [None, None, 3, None]}) df2 = pd.DataFrame({'ID': [1,2,4], 'Column C': [2, 3, 22]}) df = df.merge(df2, on='ID', how='left')
合并后输出结果:
ID Column A Column B Column C 0 1 2 NaN 2.0 1 2 3 NaN 3.0 2 3 2 3.0 NaN 3 4 3 NaN 22.0
由于ID=3不存在于df2中,新增列Column C出现空值。需要仅填充该新增列的空值为0,同时保留原有列Column B的空值不变,预期输出:
ID Column A Column B Column C 0 1 2 NaN 2.0 1 2 3 NaN 3.0 2 3 2 3.0 0.0 3 4 3 NaN 22.0
解决方案
方法1:针对指定列调用fillna
直接对Column C列使用fillna方法,指定填充值,不会修改其他列的空值:
df['Column C'] = df['Column C'].fillna(0)
方法2:用loc定位空值行赋值
通过布尔索引筛选出Column C为空的行,再批量赋值:
df.loc[df['Column C'].isna(), 'Column C'] = 0
执行任意一种方法后,即可得到符合预期的输出结果。
内容的提问来源于stack exchange,提问作者gtomer
相关产品推荐
相关产品推荐

