如果NaNs 缺少值,您可以传递诸如list 之类的列名称:
cols = ['Col1','Col2','Col3']
df[cols]=df[cols].bfill()
如果NaNs 是字符串,首先将字符串替换为带有非数字缺失值的数字:
cols = ['Col1','Col2','Col3']
df[cols]=df[cols].apply(lambda x: pd.to_numeric(x, errors='coerce')).bfill()
如果想使用您的解决方案:
for col in ['Col1','Col2','Col3']:
df[col]= pd.to_numeric(df[col], errors='coerce').bfill()
print (df)
Criteria Col1 Col2 Col3
0 Jan10Sales 12.0 13.0 4.0
1 Feb10Sales 1.0 3.0 4.0
2 Mar10Sales 5.0 13.0 14.0
3 Apr10Sales 5.0 18.0 12.0
4 May10Sales 6.0 18.0 19.0
但如果最后一行有缺失值,则回填不会替换它们,因为不存在下一个非缺失值:
print (df)
Criteria Col1 Col2 Col3
0 Jan10Sales 12 13 NAN
1 Feb10Sales 1 3 4
2 Mar10Sales NAN 13 14
3 Apr10Sales 5 NAN 12
4 May10Sales 6 18 NaN
cols = ['Col1','Col2','Col3']
df[cols]=df[cols].apply(lambda x: pd.to_numeric(x, errors='coerce')).bfill()
print (df)
Criteria Col1 Col2 Col3
0 Jan10Sales 12.0 13.0 4.0
1 Feb10Sales 1.0 3.0 4.0
2 Mar10Sales 5.0 13.0 14.0
3 Apr10Sales 5.0 18.0 12.0
4 May10Sales 6.0 18.0 NaN
那么是可能的链bfill和ffill:
df[cols]=df[cols].apply(lambda x: pd.to_numeric(x, errors='coerce')).bfill().ffill()
print (df)
Criteria Col1 Col2 Col3
0 Jan10Sales 12.0 13.0 4.0
1 Feb10Sales 1.0 3.0 4.0
2 Mar10Sales 5.0 13.0 14.0
3 Apr10Sales 5.0 18.0 12.0
4 May10Sales 6.0 18.0 12.0