gpt4 book ai didi

python - 带 ffill 的 GroupBy 删除组并且不将组放入索引

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:23 25 4
gpt4 key购买 nike

自从我将我的代码从一台计算机移植到另一台计算机后,我遇到了一个非常奇怪的问题。我在此系统上使用的是 pandas 版本 0.25.1,但不确定我之前使用的 pandas 版本。

问题如下:

我创建了一个简单的未排序(模拟)数据框,我想在其上对值进行排序并前向填充所有 NaN 值。

In [1]: import pandas as pd
...: import numpy as np

In [2]: test = pd.DataFrame({"group" : ["A", "A", "A", "B", "B", "B", "C", "C"],
...: "count" : [2, 3, 1, 2, 1, 3, 1, 2],
...: "value" : [10, np.nan, 30, np.nan, 19, np.nan, 25, np.nan]})

In [3]: test
Out[3]:
group count value
0 A 2 10.0
1 A 3 NaN
2 A 1 30.0
3 B 2 NaN
4 B 1 19.0
5 B 3 NaN
6 C 1 25.0
7 C 2 NaN

但是,当我这样做时,我丢失了整个“组”列,并且它也没有重新出现在我的索引中。

In [4]: test.sort_values(["group", "count"]).groupby("group").ffill()
Out[4]:
count value
2 1 30.0
0 2 10.0
1 3 10.0
4 1 19.0
3 2 19.0
5 3 19.0
6 1 25.0
7 2 25.0

我也尝试过使用 fillna 使用以下内容,但这给了我相同的结果:

In [5]: test.sort_values(["group", "count"]).groupby("group").fillna(method = "ffill")
Out[5]:
count value
2 1 30.0
0 2 10.0
1 3 10.0
4 1 19.0
3 2 19.0
5 3 19.0
6 1 25.0
7 2 25.0

有谁知道我做错了什么?问题似乎与 ffill 方法有关,因为我可以在 groupby 上使用 .mean() 并保留我的分组。

最佳答案

IICU,您必须使用“更新”将结果返回到数据框

test.update(test.sort_values(["group", "count"]).groupby("group").ffill())
print(test)

输出

group   count   value
0 A 2 10.0
1 A 3 10.0
2 A 1 30.0
3 B 2 19.0
4 B 1 19.0
5 B 3 19.0
6 C 1 25.0
7 C 2 25.0

关于python - 带 ffill 的 GroupBy 删除组并且不将组放入索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58181262/

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