gpt4 book ai didi

python - pandas groupby.agg() 采用分类变量的模式,其中 NaN 是组的唯一变量

转载 作者:行者123 更新时间:2023-12-04 00:50:20 25 4
gpt4 key购买 nike

我想为每个组找到最常见的值。 更新:如果有真实值和 NaN,我想删除 NaN。我只想要 NaN,这就是所有的值。

我的一些小组的所有数据都丢失了。我希望这些情况下的结果是缺失数据 (NaN) 作为最常见的值。

在这些情况下,DataFrame.groupby.agg(pd.Series.mode) 函数返回一个空分类。我想要的是 NaN。

下面是一个玩具示例...

data = """
Group, Value
A, 1
A, 1
A, 1
B, 2
C, 3
C,
C,
D,
D,
"""

from io import StringIO
df = (
pd.read_csv(StringIO(data),
skipinitialspace=True)
.astype('category')
)

df.groupby('Group')['Value'].agg(pd.Series.mode)

产生...

A                                             1.0
B 2.0
C 3.0
D [], Categories (3, float64): [1.0, 2.0, 3.0]
Name: Value, dtype: object

我的问题:有没有办法获得 NAN,或者检测空分类并将其设为 NaN。 更新:请注意,我不能使用 dropna=False,因为这会给我上面 C 的错误答案。

作为上下文,我的原始 DataFrame 有 2700 万行,而我的分组框架有 600 万行。所以,我想避免缓慢的解决方案。

最佳答案

您可以应用 pd.Series.mode 然后 pd.to_numericerrors="coerce":

x = df.groupby("Group")["Value"].agg(pd.Series.mode)
print(pd.to_numeric(x, errors="coerce"))

打印:

Group
A 1.0
B 2.0
C 3.0
D NaN
Name: Value, dtype: float64

关于python - pandas groupby.agg() 采用分类变量的模式,其中 NaN 是组的唯一变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67133233/

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