Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫用第一行填充非空数据_Python_Python 3.x_Pandas - Fatal编程技术网

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