如何在pandas中基于另一列的行值修改指定列的对应行数据
pandas实现A列空值用同⾏B列值替换的⽅案
最优实现代码
pandas内置的fillna()方法原生支持该需求,无需手动遍历,是性能最优的向量化实现:
# 直接用B列的值填充A列的NaN df['A'] = df['A'].fillna(df['B'])
完整可复现示例
import pandas as pd import numpy as np # 构造测试数据 df = pd.DataFrame({ 'A': [1, np.nan, 3, np.nan, 5], 'B': [10, 20, 30, 40, 50] }) # 执行填充 df['A'] = df['A'].fillna(df['B']) print(df)
运行输出结果:
A B 0 1.0 10 1 20.0 20 2 3.0 30 3 40.0 40 4 5.0 50
可选实现:条件赋值(适合复杂扩展场景)
如果后续需要叠加更多判断逻辑,可以用loc条件索引实现:
df.loc[df['A'].isna(), 'A'] = df.loc[df['A'].isna(), 'B']
注意事项
- 不建议用for循环逐行遍历处理,pandas向量化操作在大数据量下性能比遍历高数十到数百倍
- 若需要保留原始A列数据,可以先复制备份再修改:
df['A_filled'] = df['A'].fillna(df['B'])
原始数据参考

预期结果参考

内容的提问来源于stack exchange,提问作者PinAppleRedbull
相关产品推荐
相关产品推荐

