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

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

我有随机的NaN值,我想用行的第一个元素替换它。如何进行?

python pandas dataframe
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.