如何在pandas中基于其他列规则替换DataFrame NaN并同步修改对应列值
实现方法
你可以通过布尔索引定位目标行后分别修改两列的值,逻辑直观且性能高效:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'a': [1,None,3], 'b': [5,10,15]}) # 定位a列为NaN的行 na_mask = df['a'].isna() # 替换a列NaN为对应行b列的平方 df.loc[na_mask, 'a'] = df.loc[na_mask, 'b'] ** 2 # 将对应行的b列设为NaN df.loc[na_mask, 'b'] = pd.NA
运行后输出的df和你的预期结果完全一致:
a b 0 1.0 5.0 1 100.0 <NA> 2 3.0 15.0
如果需要a列为整型、b列支持整型空值,可以额外加两行类型转换:
df['a'] = df['a'].astype(int) df['b'] = df['b'].astype('Int64')
内容的提问来源于stack exchange,提问作者SKulibin
相关产品推荐
相关产品推荐

