gpt4 book ai didi

python - 分组并找到组的总和,但将 NaN 返回为 NaN,而不是 0

转载 作者:太空狗 更新时间:2023-10-30 01:11:35 25 4
gpt4 key购买 nike

我有一个数据框,其中每个唯一组有 4 行。因此,我需要按使它们独一无二的列进行分组,并进行一些聚合,例如最大值、最小值、总和和平均值。但问题是我有一些组的所有 NaN 值(在某些列中)并返回 0。是否可以返回 NaN?例如:df

       time            id     el    conn   column1  column2  column3
2018-02-11 14:00:00 1 a 12 8 5 NaN
2018-02-11 14:00:00 1 a 12 1 NaN NaN
2018-02-11 14:00:00 1 a 12 3 7 NaN
2018-02-11 14:00:00 1 a 12 4 12 NaN
2018-02-11 14:00:00 2 a 5 NaN 5 5
2018-02-11 14:00:00 2 a 5 NaN 3 2
2018-02-11 14:00:00 2 a 5 NaN NaN 6
2018-02-11 14:00:00 2 a 5 NaN 7 NaN

因此,例如,我需要对 column1、column3 和 column2 进行分组('id'、'el'、'conn')并求和。 (在实际情况下,我需要对更多列进行聚合)。我尝试了几种方法:.sum()、.transform('sum'),但是对于所有 NaN 值的组,我返回一个零。

期望的输出:

    time               id    el     conn   column1  column2  column3
2018-02-11 14:00:00 1 a 12 16 24 NaN
2018-02-11 14:00:00 2 a 5 NaN 15 13

欢迎任何帮助。

最佳答案

将参数 min_count 更改为 1 - 这在 last pandas version 0.22.0 中有效:

min_count : int, default 0

The required number of valid values to perform the operation. If fewer than min_count non-NA values are present the result will be NA.

New in version 0.22.0: Added with the default being 1. This means the sum or product of an all-NA or empty series is NaN.

df = df.groupby(['time','id', 'el', 'conn'], as_index=False).sum(min_count=1)
print (df)
time id el conn column1 column2 column3
0 2018-02-11 14:00:00 1 a 12 16.0 24.0 NaN
1 2018-02-11 14:00:00 2 a 5 NaN 15.0 13.0

关于python - 分组并找到组的总和,但将 NaN 返回为 NaN,而不是 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233984/

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