为了账号安全,请及时绑定邮箱和手机立即绑定

GroupBy Pandas 计算连续的零

GroupBy Pandas 计算连续的零

一只斗牛犬 2021-07-09 14:07:25
我的输入看起来像下面的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 函数,但它计算了零的总数,而我对重复连续的零感兴趣。我希望我的输出看起来像这样:OutputA    B  DATE      hour  measure Consec_zero_countA10  1  1/1/2014    0   0       4A10  1  1/1/2014    1   0       4A10  1  1/1/2014    2   0       4A10  1  1/1/2014    3   0       4A10  2  1/1/2014    4   0       1A10  2  1/1/2014    5   1       0A10  2  1/1/2014    6   2       0A10  3  1/1/2014    7   0       1A11  1  1/1/2014    8   0       2A11  1  1/1/2014    9   0       2A11  1  1/1/2014    10  2       0A11  1  1/1/2014    11  0       2A11  1  1/1/2014    12  0       2A12  2  1/1/2014    13  1       0A12  2  1/1/2014    14  3       0A12  2  1/1/2014    15  0       1A12  4  1/1/2014    16  5       0A12  4  1/1/2014    17  0       1A12  6  1/1/2014    18  0       1任何线索将不胜感激。提前致谢!
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

创建助手Series通过比较连续值的唯一的组ne(!=)的shiftED值随cumsum。然后groupby用transform和size。仅用于0with 的最后一个 fiter 值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


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信