我有随机NaN
值,我想用行的第一个元素替换它。怎么办?
答案 0 :(得分:2)
您可以使用fillna()
方法执行此操作并根据您是要使用上一个有效条目还是下一个有效条目来填充NaN来传递method
关键字参数。请注意,如果inplace
设置为True
,此方法将返回数据框的副本,并仅修改原始数据。
由于您希望对某一行执行此操作,因此可以先转置数据框并使用fillna()
方法使用相应的索引(转置后的列)。
示例:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.rand(10, 3), columns=['A', 'B', 'C'])
# Insert random NaN values
df['A'][np.random.randint(0, 10, 3)] = np.nan
df['B'][np.random.randint(0, 10, 3)] = np.nan
df['C'][np.random.randint(0, 10, 3)] = np.nan
现在df
应如下所示:
>>> df
A B C
0 0.978618 0.799159 NaN
1 0.780529 0.118274 NaN
2 0.143353 0.944669 0.521848
3 NaN 0.264556 0.774234
4 NaN 0.568434 0.018790
5 0.617635 NaN NaN
6 0.943748 0.681820 0.359508
7 0.437032 NaN 0.060225
8 NaN 0.670638 0.210383
9 0.128926 0.315428 0.363711
现在您可以如上所述填充任意行的NaN值(请注意转置),如下所示:
>>> df.T[7].fillna(method='ffill', inplace=True)
现在行中的NaN填充了上一个有效值,可以在数据框中看到:
>>> df
A B C
0 0.978618 0.799159 NaN
1 0.780529 0.118274 NaN
2 0.143353 0.944669 0.521848
3 NaN 0.264556 0.774234
4 NaN 0.568434 0.018790
5 0.617635 NaN NaN
6 0.943748 0.681820 0.359508
7 0.437032 0.437032 0.060225
8 NaN 0.670638 0.210383
9 0.128926 0.315428 0.363711