2024-09-28 03:15:12 发布
网友
我的一些NaN是字符串,一些NaN是数值缺失值,如何在这两种情况下使用bfill和ffill
df
Criteria Col1 Col2 Col3 Col4 Jan10Sales 12 13 NAN NAN Feb10Sales 1 3 4 ABC Mar10Sales NAN 13 14 XY Apr10Sales 5 NAN 12 V May10Sales 6 18 19 AB
你可以试试这个:
for cols in ['Col1','Col2','Col3']: df[cols].fillna(method='bfill', inplace=True)
pandas.DataFrame.fillna
如果NaN缺少值,可以传递列名称,如list:
NaN
list
cols = ['Col1','Col2','Col3'] df[cols]=df[cols].bfill()
如果NaN是字符串,请首先将字符串替换为数字,并使用非数字的缺失值:
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:
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
I guess string 'NAN' does not mean Non-Value Nan, you already got the solution, you can check my code too
df = df[df.ne('NAN')].bfill() Criteria Col1 Col2 Col3 0 Jan10Sales 12 13 4 1 Feb10Sales 1 3 4 2 Mar10Sales 5 13 14 3 Apr10Sales 5 18 12 4 May10Sales 6 18 19
你可以试试这个:
pandas.DataFrame.fillna
如果
NaN
缺少值,可以传递列名称,如list
:如果
NaN
是字符串,请首先将字符串替换为数字,并使用非数字的缺失值:如果您想使用您的解决方案:
但是,如果最后一行缺少值,则回补操作不会重新设置它们,因为不存在下一个非缺少值:
然后是可能的链
bfill
和ffill
:相关问题 更多 >
编程相关推荐