Python 熊猫用第一行填充非空数据
假设数据集的值如下所示:Python 熊猫用第一行填充非空数据,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设数据集的值如下所示: import pandas as pd df = pd.DataFrame({'DATA1': ['OK', np.nan,'1', np.nan], 'DATA2' : ['KO','2', np.nan, np.nan]}) df 数据如下所示: 我的目标是根据以下示例将所有具有值(非空)的行替换为第一行值: 我知道我可以直接更改数据,但如果我有数千列和数千行,我希望找到更好的解决方案 多谢各位 顺致敬意, Railey
import pandas as pd
df = pd.DataFrame({'DATA1': ['OK', np.nan,'1', np.nan],
'DATA2' : ['KO','2', np.nan, np.nan]})
df
数据如下所示:
我的目标是根据以下示例将所有具有值(非空)的行替换为第一行值:
我知道我可以直接更改数据,但如果我有数千列和数千行,我希望找到更好的解决方案
多谢各位
顺致敬意,
Railey Shahril用于选择第一行:
df = df.mask(df.notna(), df.iloc[0], axis=1)
print (df)
DATA1 DATA2
0 OK KO
1 NaN KO
2 OK NaN
3 NaN NaN
若要替换为第一个非缺失值,请使用添加回填:
df = pd.DataFrame({'DATA1': [ np.nan, 'OK','1', np.nan],
'DATA2' : ['KO','2', np.nan, np.nan]})
print (df)
DATA1 DATA2
0 NaN KO
1 OK 2
2 1 NaN
3 NaN NaN
df = df.mask(df.notna(), df.bfill(axis=1).iloc[0], axis=1)
print (df)
DATA1 DATA2
0 NaN KO
1 KO KO
2 KO NaN
3 NaN NaN
您还可以使用:
final=pd.DataFrame(np.where(df.notnull(),df.iloc[0],df),df.index,df.columns)
DATA1 DATA2
0 OK KO
1 NaN KO
2 OK NaN
3 NaN NaN