我在将nan填充到过滤的df中时遇到以下问题。 让我们来看看这个df:
condition value
0 A 1
1 B 8
2 B np.nan
3 A np.nan
4 C 3
5 C np.nan
6 A 2
7 B 5
8 C 4
9 A np.nan
10 B np.nan
11 C np.nan
如何使用基于条件的最后一个值填充np.nan以便获得以下结果?
condition value
0 A 1
1 B 8
2 B 8
3 A 1
4 C 3
5 C 3
6 A 2
7 B 5
8 C 4
9 A 2
10 B 5
11 C 4
我失败了以下代码(ValueError:无法使用多维键索引)
conditions = set(df['condition'].tolist())
for c in conditions :
filter = df.loc[df['condition'] == c]
df.loc[filter, 'value'] = df.loc[filter, 'value'].fillna(method='ffill')
维也纳的THX和BR
答案 0 :(得分:3)
如果您的值是实际的NaN
,则只需对groupby
做一个condition
,然后调用ffill
(实际上是{{1的包装}}):
fillna(method='ffill')
哪个返回:
df.groupby('condition').ffill()
如您的示例所示,如果您的值是表示 condition value
0 A 1
1 B 8
2 B 8
3 A 1
4 C 3
5 C 3
6 A 2
7 B 5
8 C 4
9 A 2
10 B 5
11 C 4
的字符串,请在前面替换它们:
np.nan