让一个数据集具有如下值:
import pandas as pd
df = pd.DataFrame({'DATA1': ['OK', np.nan,'1', np.nan],
'DATA2' : ['KO','2', np.nan, np.nan]})
df
数据将显示如下:
我的目标是按照下面的示例将所有具有值(非null)的行替换为第一行值:
我知道我可以直接更改数据,但是如果我有成千上万的列和行,我想找到一个更好的解决方案。
谢谢最好的祝福莱莉·沙里尔
使用DataFrame.mask
和DataFrame.mask
选择第一行:
DataFrame.iloc
要替换为第一个非缺失值,请添加DataFrame.iloc
:
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
您也可以使用backfill
:
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
np.where()