Pandas用第一行填充非空数据

问题描述 投票:1回答:2

让一个数据集具有如下值:

import pandas as pd
df = pd.DataFrame({'DATA1': ['OK', np.nan,'1', np.nan], 
                   'DATA2' : ['KO','2', np.nan, np.nan]})
df

数据将显示如下:

enter image description here

我的目标是按照下面的示例将所有具有值(非null)的行替换为第一行值:

enter image description here

我知道我可以直接更改数据,但是如果我有成千上万的列和行,我想找到一个更好的解决方案。

谢谢最好的祝福莱莉·沙里尔

python python-3.x pandas
2个回答
2
投票

使用DataFrame.maskDataFrame.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

1
投票

您也可以使用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()
© www.soinside.com 2019 - 2024. All rights reserved.