gpt4 book ai didi

python - 如何聚合 Pandas 中组对象的最后n条记录

转载 作者:行者123 更新时间:2023-12-01 15:00:58 32 4
gpt4 key购买 nike

是否可以在 pandas 中的组对象的一列的最后 5 条记录中找到空值计数并保存在新列中。假设我们在数据框中有一个组 (00936),其中包含 10 条记录,如下所示。我不想计算“Obse”列中的空值总数,而只计算过去 5 个月的空值。这个计数(即 4.0)我想填写一个新列。

        code    months  Obse
2903 00936 2019-02 4.0
2904 00936 2019-03 2.0
2905 00936 2019-04 1.0
2906 00936 2019-05 NaN
2907 00936 2019-06 NaN
2908 00936 2019-07 2.0
2909 00936 2019-08 NaN
2910 00936 2019-09 NaN
2911 00936 2019-10 NaN

我正在尝试使用 tail 函数,但它不起作用,因为它返回的记录少于组的长度。


df['count_nulls'] = df.groupby('code').tail(5).Obse.transform(lambda group: group.isnull().sum())

我怎样才能做到这一点。以下是上述输入数据框的预期输出

        code    months  Obse count_nulls
2903 00936 2019-02 4.0 4.0
2904 00936 2019-03 NaN 4.0
2905 00936 2019-04 1.0 4.0
2906 00936 2019-05 NaN 4.0
2907 00936 2019-06 NaN 4.0
2908 00936 2019-07 2.0 4.0
2909 00936 2019-08 NaN 4.0
2910 00936 2019-09 NaN 4.0
2911 00936 2019-10 NaN 4.0

最佳答案

如何在 lambda 函数中移动 tail:

df['count_nulls'] = (df.groupby(['code'])['Obse']
.transform(lambda x: x.tail(5).isna().sum())
)

输出:

      code   months  Obse  count_nulls
2903 936 2019-02 4.0 4.0
2904 936 2019-03 2.0 4.0
2905 936 2019-04 1.0 4.0
2906 936 2019-05 NaN 4.0
2907 936 2019-06 NaN 4.0
2908 936 2019-07 2.0 4.0
2909 936 2019-08 NaN 4.0
2910 936 2019-09 NaN 4.0
2911 936 2019-10 NaN 4.0

关于python - 如何聚合 Pandas 中组对象的最后n条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095336/

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