Python 在数据帧中填充NaN的快速方法
我有Python 在数据帧中填充NaN的快速方法,python,pandas,Python,Pandas,我有DataFrame对象df,列如下: [In]: df [Out]: id sum 0 1 NaN 1 1 NaN 2 1 2 3 1 NaN 4 1 4 5
DataFrame
对象df
,列如下:
[In]: df
[Out]:
id sum
0 1 NaN
1 1 NaN
2 1 2
3 1 NaN
4 1 4
5 1 NaN
6 2 NaN
7 2 NaN
8 2 3
9 2 NaN
10 2 8
10 2 NaN
... ... ...
[1810601 rows x 2 columns]
[In]: df
[Out]:
id sum
0 1 0
1 1 0
2 1 2
3 1 2
4 1 4
5 1 4
6 2 0
7 2 0
8 2 3
9 2 3
10 2 8
10 2 8
... ... ...
[1810601 rows x 2 columns]
我的列中有很多aNaN
值,我想用以下方式填充这些值:
- 如果
在开头(对于第一个NaN
perindex
等于id
),那么它应该是0
0
- 否则,如果
我想从相同NaN
id的上一个索引中获取值
[In]: df
[Out]:
id sum
0 1 NaN
1 1 NaN
2 1 2
3 1 NaN
4 1 4
5 1 NaN
6 2 NaN
7 2 NaN
8 2 3
9 2 NaN
10 2 8
10 2 NaN
... ... ...
[1810601 rows x 2 columns]
[In]: df
[Out]:
id sum
0 1 0
1 1 0
2 1 2
3 1 2
4 1 4
5 1 4
6 2 0
7 2 0
8 2 3
9 2 3
10 2 8
10 2 8
... ... ...
[1810601 rows x 2 columns]
我尝试使用带有
iterrows()
的循环“一步一步”地完成它,但这是一种非常无效的方法。我相信使用pandas方法可以更快地完成此任务尝试groupby建议的ffill
df['sum'] = df.groupby('id')['sum'].ffill().fillna(0)
按照groupby的建议尝试使用ffill
df['sum'] = df.groupby('id')['sum'].ffill().fillna(0)
熊猫有这样的功能!看一看熊猫.DataFrame.fillna。但是对于那个特定的条件,我如何使用熊猫.DataFrame.fillna?@Justin
fillna
将不支持条件填充熊猫有一个功能!请看一下熊猫.DataFrame.fillna。但是如何使用熊猫.DataFrame.fillna来满足特定条件?@Justinfillna
将不支持条件填充