【发布时间】:2020-06-18 22:47:55
【问题描述】:
尝试在数据框中有条件地填充 NaN,基于:
1. A 上的值(使用 groupby 完成)
2.在groupby(A)里面,如果value是nan并且是first,填充为零然后ffill(例如A=a)
3. 在 groupby(A) 中,如果 value 是 nan 并且不是 first,则 bfill (例如 A=b)
4.在groupby(A)中,如果值为nan但没有数据点可跟随,则ffill(例如A=c)
我闻到三元 + lambda 的味道,但想要一种 Python 式的写法。
基本上,起点是:
df
A B
0 a NaN
1 a NaN
2 a 3.0
3 a 4.0
4 b 4.0
5 b NaN
6 b 6.0
7 b 6.0
8 c 7.0
9 c NaN
10 c NaN
df 应该变成:
df
A B
0 a 0.0
1 a 0.0
2 a 3.0
3 a 4.0
4 b 4.0
5 b 6.0
6 b 6.0
7 b 6.0
8 c 7.0
9 c 7.0
10 c 7.0
【问题讨论】:
标签: python pandas data-cleaning data-processing