我想在 groupbyffill之后bfill的特定列。
我的解决方案有效:
import numpy as np
import pandas as pd
df = pd.DataFrame({
"A": [1, 1, 1, 1, 2, 2, 2, 2],
"B": [np.nan, 'f1', 'b1', np.nan, np.nan, 'f2', 'b2', np.nan]
})
df['B'] = df.groupby('A')['B'].apply(lambda _: _.ffill().bfill())
所以这:
A B
0 1 NaN
1 1 f1
2 1 b1
3 1 NaN
4 2 NaN
5 2 f2
6 2 b2
7 2 NaN
变成这样:
A B
0 1 f1
1 1 f1
2 1 b1
3 1 b1
4 2 f2
5 2 f2
6 2 b2
7 2 b2
请注意,我要 ffill 和 bfill 的序列将始终采用这种格式 ( Nan, x, y, Nan)
虽然这有效,但它在大型数据帧上非常慢。
我正在寻找一些优化来加快速度(理想情况下不求助于使用 Dask 或多处理),也许我可以进行 Numpy 优化?
我没有太多运气看其他答案,比如这个。
慕慕森
qq_笑_17
一只斗牛犬
相关分类