我有一个从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)
感谢您的帮助
答案 0 :(得分:2)
这是我的方法:
s = df.Value.ne(15)
df['Counter'] = (~s).groupby(s.cumsum()).cumsum()
答案 1 :(得分:0)
尝试使用cumsum
和cumcount
:
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