如何使用Pandas替换第一个元素中的空值?

时间:2015-12-11 21:26:02

标签: python pandas dataframe

我有随机NaN值,我想用行的第一个元素替换它。怎么办?

1 个答案:

答案 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