gpt4 book ai didi

python - GroupBy Pandas 计算连续的零

转载 作者:行者123 更新时间:2023-12-01 13:18:03 24 4
gpt4 key购买 nike

我的输入看起来像下面的df。

我需要按列(A,B)分组并计算连续零的数量/计算每个组中连续零的长度并写入新列“Zero_count”

Input:
A B DATE hour measure
A10 1 1/1/2014 0 0
A10 1 1/1/2014 1 0
A10 1 1/1/2014 2 0
A10 1 1/1/2014 3 0
A10 2 1/1/2014 4 0
A10 2 1/1/2014 5 1
A10 2 1/1/2014 6 2
A10 3 1/1/2014 7 0
A11 1 1/1/2014 8 0
A11 1 1/1/2014 9 0
A11 1 1/1/2014 10 2
A11 1 1/1/2014 11 0
A11 1 1/1/2014 12 0
A12 2 1/1/2014 13 1
A12 2 1/1/2014 14 3
A12 2 1/1/2014 15 0
A12 4 1/1/2014 16 5
A12 4 1/1/2014 17 0
A12 6 1/1/2014 18 0

我尝试使用“groupby”技术来获取组,但组内连续零计数是我正在寻找的东西。我曾尝试使用 lambda 函数,但它计算了零的总数,而我对重复连续的零感兴趣。我希望我的输出看起来像这样:
Output
A B DATE hour measure Consec_zero_count
A10 1 1/1/2014 0 0 4
A10 1 1/1/2014 1 0 4
A10 1 1/1/2014 2 0 4
A10 1 1/1/2014 3 0 4
A10 2 1/1/2014 4 0 1
A10 2 1/1/2014 5 1 0
A10 2 1/1/2014 6 2 0
A10 3 1/1/2014 7 0 1
A11 1 1/1/2014 8 0 2
A11 1 1/1/2014 9 0 2
A11 1 1/1/2014 10 2 0
A11 1 1/1/2014 11 0 2
A11 1 1/1/2014 12 0 2
A12 2 1/1/2014 13 1 0
A12 2 1/1/2014 14 3 0
A12 2 1/1/2014 15 0 1
A12 4 1/1/2014 16 5 0
A12 4 1/1/2014 17 0 1
A12 6 1/1/2014 18 0 1

任何线索将不胜感激。提前致谢!

最佳答案

创建助手 Series通过比较 ne 来获取唯一的连续值组( != ) 的 shift ed 值与 cumsum .然后 groupby transform size .仅适用于 0 的最后一个过滤器值与 numpy.where :

g = df['measure'].ne(df['measure'].shift()).cumsum()
counts = df.groupby(['A','B', g])['measure'].transform('size')
df['Consec_zero_count'] = np.where(df['measure'].eq(0), counts, 0)
print (df)
A B DATE hour measure Consec_zero_count
0 A10 1 1/1/2014 0 0 4
1 A10 1 1/1/2014 1 0 4
2 A10 1 1/1/2014 2 0 4
3 A10 1 1/1/2014 3 0 4
4 A10 2 1/1/2014 4 0 1
5 A10 2 1/1/2014 5 1 0
6 A10 2 1/1/2014 6 2 0
7 A10 3 1/1/2014 7 0 1
8 A11 1 1/1/2014 8 0 2
9 A11 1 1/1/2014 9 0 2
10 A11 1 1/1/2014 10 2 0
11 A11 1 1/1/2014 11 0 2
12 A11 1 1/1/2014 12 0 2
13 A12 2 1/1/2014 13 1 0
14 A12 2 1/1/2014 14 3 0
15 A12 2 1/1/2014 15 0 1
16 A12 4 1/1/2014 16 5 0
17 A12 4 1/1/2014 17 0 1
18 A12 6 1/1/2014 18 0 1

关于python - GroupBy Pandas 计算连续的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752756/

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