gpt4 book ai didi

python - 非零值的条件总和

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

我有一个如下的数据框:

        Datetime     Data      Fn
0 18747.385417 11275.0 0
1 18747.388889 8872.0 1
2 18747.392361 7050.0 0
3 18747.395833 8240.0 1
4 18747.399306 5158.0 1
5 18747.402778 3926.0 0
6 18747.406250 4043.0 0
7 18747.409722 2752.0 1
8 18747.420139 3502.0 1
9 18747.423611 4026.0 1
我想计算列(Fn)的连续非零值的总和
我想要我的结果数据框如下:
        Datetime     Data      Fn     Sum
0 18747.385417 11275.0 0 0
1 18747.388889 8872.0 1 1
2 18747.392361 7050.0 0 0
3 18747.395833 8240.0 1 1
4 18747.399306 5158.0 1 2 <<<
5 18747.402778 3926.0 0 0
6 18747.406250 4043.0 0 0
7 18747.409722 2752.0 1 1
8 18747.420139 3502.0 1 2
9 18747.423611 4026.0 1 3

最佳答案

您可以使用 groupby()cumsum() :

groups = df.Fn.eq(0).cumsum()
df['Sum'] = df.Fn.ne(0).groupby(groups).cumsum()

细节
第一次使用 df.Fn.eq(0).cumsum()创建连续非零的伪组。每个零将获得一个新的 id,而连续的非零将保持相同的 id:
groups = df.Fn.eq(0).cumsum()

# groups Fn (Fn added just for comparison)
# 0 1 0
# 1 1 1
# 2 2 0
# 3 2 1
# 4 2 1
# 5 3 0
# 6 4 0
# 7 4 1
# 8 4 1
# 9 4 1
然后群 df.Fn.ne(0)关于这些伪组和 cumsum()生成组内序列:
df['Sum'] = df.Fn.ne(0).groupby(groups).cumsum()

# Datetime Data Fn Sum
# 0 18747.385417 11275.0 0 0
# 1 18747.388889 8872.0 1 1
# 2 18747.392361 7050.0 0 0
# 3 18747.395833 8240.0 1 1
# 4 18747.399306 5158.0 1 2
# 5 18747.402778 3926.0 0 0
# 6 18747.406250 4043.0 0 0
# 7 18747.409722 2752.0 1 1
# 8 18747.420139 3502.0 1 2
# 9 18747.423611 4026.0 1 3

关于python - 非零值的条件总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67342807/

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