Pandas用Credit_History列对应值填充多列缺失值失效问题咨询
问题原因
你原代码不生效的核心原因是 DataFrame.fillna() 默认按列名匹配传入的填充值,你传入的df['Credit_History']是行索引对应的Series,和待填充的列名不匹配,所以填充逻辑没有触发。
解决方法
方案1:最小修改原有代码(pandas 1.1.0及以上版本支持)
只需要在原有代码基础上添加axis=0参数,指定按行索引匹配填充值即可:
cols = ['Loan_Status','subject_status','test_status'] df[cols] = df[cols].fillna(df['Credit_History'], axis=0)
方案2:全版本兼容方案(逻辑直观)
如果你的pandas版本低于1.1.0,可以用按行apply的方式实现:
cols = ['Loan_Status','subject_status','test_status'] df[cols] = df.apply(lambda row: row[cols].fillna(row['Credit_History']), axis=1)
最终输出效果
填充完成后DataFrame如下:
| Credit_History | Loan_Status | subject_status | test_status |
|---|---|---|---|
| Yes | T1 | DUMMA | test |
| ABC | T2 | CHUMMA | ABC |
| DEF | DEF | DEF | DEF |
| JKL | JKL | JKL | JKL |
内容的提问来源于stack exchange,提问作者The Great
相关产品推荐
相关产品推荐

