gpt4 book ai didi

python - 在 Pandas 中按组回填列

转载 作者:行者123 更新时间:2023-12-04 17:49:51 25 4
gpt4 key购买 nike

我有一个像

A,B,C,D
1,2,,
1,2,30,100
1,2,40,100
4,5,,
4,5,60,200
4,5,70,200
8,9,,

在第 1 行和第 4 行中,缺少 C 值( NaN )。我想分别从第 2 行和第 5 行获取它们的值。 (第一次出现相同的 A、B 值)。

如果没有找到匹配的行,只需输入 0(如最后一行)
预期操作:
A,B,C,D
1,2,30,
1,2,30,100
1,2,40,100
4,5,60,
4,5,60,200
4,5,70,200
8,9,0,

使用 fillna我找到了 bfill: use NEXT valid observation to fill gapNEXT必须从逻辑上进行观察(查看 col A、B 值),而不仅仅是即将到来的 C 列值

最佳答案

您必须调用 df.groupbyAB先然后申请bfill功能:

In [501]: df.C = df.groupby(['A', 'B']).apply(lambda x: x.C.bfill()).reset_index(drop=True)

In [502]: df
Out[502]:
A B C D
0 1 2 30 NaN
1 1 2 30 100.0
2 1 2 40 100.0
3 4 5 60 NaN
4 4 5 60 200.0
5 4 5 70 200.0
6 8 9 0 NaN

您也可以分组然后调用 dfGroupBy.bfill直接(我认为这会更快):
In [508]: df.C = df.groupby(['A', 'B']).C.bfill().fillna(0).astype(int); df
Out[508]:
A B C D
0 1 2 30 NaN
1 1 2 30 100.0
2 1 2 40 100.0
3 4 5 60 NaN
4 4 5 60 200.0
5 4 5 70 200.0
6 8 9 0 NaN

如果你想摆脱 NaN s 在 D ,你可以这样做:
df.D.fillna('', inplace=True)

关于python - 在 Pandas 中按组回填列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com