根据Pandas中数据框列的现有值增加或重置计数器

时间:2019-12-10 20:02:21

标签: pandas

我有一个从csv文件导入的数据框,如下所示:

      Value       Counter 
  1.    5           0
  2.    15          1
  3.    15          2           
  4.    15          3
  5.    10          0
  6.    15          1
  7.    15          1

仅当值= 15时,我才想增加counter的值,否则将其重置为0。我尝试了cumsum,但是卡住了如何将其重置为不匹配的零值

这是我的代码

     import pandas as pd
     import csv
     import numpy as np
     dfs = []
     df = pd.read_csv("H:/test/test.csv")
     df["Counted"] = (df["Value"] == 15).cumsum()
     dfs.append(df)
     big_frame = pd.concat(dfs, sort=True, ignore_index=False)
     big_frame.to_csv('H:/test/List.csv' , index=False)

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这是我的方法:

s = df.Value.ne(15)
df['Counter'] = (~s).groupby(s.cumsum()).cumsum()

答案 1 :(得分:0)

尝试使用cumsumcumcount

df['Counter'] = df.groupby(df['Value'].ne(15).cumsum()).cumcount()

输出:

     Value  Counter
1.0      5        0
2.0     15        1
3.0     15        2
4.0     15        3
5.0     10        0
6.0     15        1
7.0     15        2