无法用所有列中的列值填充缺失值
Posted
技术标签:
【中文标题】无法用所有列中的列值填充缺失值【英文标题】:Unable to fill missing values with column value across all columns 【发布时间】:2021-11-20 07:38:20 【问题描述】:我有一个如下所示的数据框
df = pd.DataFrame('Credit_History':['Yes','ABC','DEF', 'JKL'],
'Loan_Status':['T1','T2',np.nan,np.nan],
'subject_status':['DUMMA','CHUMMA',np.nan,np.nan],
'test_status':['test',np.nan,np.nan,np.nan])
我的目标是在所有行和列中使用相应的 credit_history
值填充缺失值
我尝试了以下方法,但它不起作用
cols = ['Loan_Status','subject_status','test_status']
df[cols] = df[cols].fillna(df['Credit_History'])
我希望我的输出如下所示。基本上,无论缺少哪一行,它都应该从credit_history
列中选择相应的值
【问题讨论】:
【参考方案1】:使用DataFrame.apply
,所以使用Series.fillna
:
cols = ['Loan_Status','subject_status','test_status']
df[cols] = df[cols].apply(lambda x: x.fillna(df['Credit_History']))
print (df)
Credit_History Loan_Status subject_status test_status
0 Yes T1 DUMMA test
1 ABC T2 CHUMMA ABC
2 DEF DEF DEF DEF
3 JKL JKL JKL JKL
或者转置:
cols = ['Loan_Status','subject_status','test_status']
df[cols] = df[cols].T.fillna(df['Credit_History']).T
print (df)
Credit_History Loan_Status subject_status test_status
0 Yes T1 DUMMA test
1 ABC T2 CHUMMA ABC
2 DEF DEF DEF DEF
3 JKL JKL JKL JKL
【讨论】:
以上是关于无法用所有列中的列值填充缺失值的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用fillna函数并设置bfill参数使用列中的后序值填充缺失值
pandas 处理缺失值[dropna、drop、fillna]
pandas使用fillna函数并设置fffill参数使用列中的前序值填充缺失值(replace missing values with preceding values in column in d