我通过ffill面对小组的问题 . 它似乎没有以正确的顺序应用前向填充这是我的起始数据
group date stage_2
0 A 2014-01-01 NaN
1 A 2014-01-03 NaN
2 A 2014-01-04 NaN
3 A 2014-01-05 1.0
4 B 2014-01-02 NaN
5 B 2014-01-06 NaN
6 B 2014-01-10 NaN
7 C 2014-01-03 1.0
8 C 2014-01-05 3.0
9 C 2014-01-08 NaN
10 C 2014-01-09 NaN
11 C 2014-01-10 NaN
12 C 2014-01-11 NaN
13 D 2014-01-01 NaN
14 D 2014-01-03 NaN
15 D 2014-01-04 NaN
16 E 2014-01-04 1.0
17 E 2014-01-06 3.0
18 E 2014-01-07 4.0
19 E 2014-01-08 NaN
20 E 2014-01-09 NaN
21 E 2014-01-10 NaN
22 F 2014-01-08 NaN
应用ffill方法后,这就是我得到的
df ['stage_2'] = df.groupby('group')['stage_2'] . ffill()
我期待索引9到12和21的 Value 不同
group date stage_2
0 A 2014-01-01 NaN
1 A 2014-01-03 NaN
2 A 2014-01-04 NaN
3 A 2014-01-05 1.0
4 B 2014-01-02 NaN
5 B 2014-01-06 NaN
6 B 2014-01-10 NaN
7 C 2014-01-03 1.0
8 C 2014-01-05 3.0
9 C 2014-01-08 1.0
10 C 2014-01-09 NaN
11 C 2014-01-10 NaN
12 C 2014-01-11 NaN
13 D 2014-01-01 NaN
14 D 2014-01-03 NaN
15 D 2014-01-04 NaN
16 E 2014-01-04 1.0
17 E 2014-01-06 3.0
18 E 2014-01-07 4.0
19 E 2014-01-08 4.0
20 E 2014-01-09 4.0
21 E 2014-01-10 NaN
22 F 2014-01-08 NaN
1 回答
我可以重现这一点的唯一方法是输入非ASCII字符,例如西里尔文
С
和Е
分别在索引9-12和21的group
列中 .EDIT
好吧,很可能你正在使用pandas
v0.23.0
,它有bug(在未来的版本中修复,至少在v0.23.4
中),这使得.ffill()
给出你发布的确切输出 . 所以请upgrade your pandas .