Python 是否可以在一个数据帧中添加一个计数器,该计数器每行计数,当两列中的一列中的值更改时重置为1?
我有一个数据框,需要在其中的一个新列中创建一个计数器。计数器应开始每行计数。当数据帧中两列之一的值更改时,计数器需要重置为1。列中的值是整数 数据帧示例:Python 是否可以在一个数据帧中添加一个计数器,该计数器每行计数,当两列中的一列中的值更改时重置为1?,python,pandas,dataframe,counter,reset,Python,Pandas,Dataframe,Counter,Reset,我有一个数据框,需要在其中的一个新列中创建一个计数器。计数器应开始每行计数。当数据帧中两列之一的值更改时,计数器需要重置为1。列中的值是整数 数据帧示例: import pandas as pd data = {'Col1':[1, 2, 3, 3, 3, 3, 3, 3, 4, 4 ], 'Col2':[1, 1, 1, 1, 1, 2, 2, 2, 2, 2]} df = pd.DataFrame(data) print(df) 起初我试过这个,但似乎不起作用 df['Counter']
import pandas as pd
data = {'Col1':[1, 2, 3, 3, 3, 3, 3, 3, 4, 4 ], 'Col2':[1, 1, 1, 1, 1, 2, 2, 2, 2, 2]}
df = pd.DataFrame(data)
print(df)
起初我试过这个,但似乎不起作用
df['Counter'] = df.groupby((df['Col1'] != df['Col1'].shift(1)).cumsum()).cumcount()+1
df['Counter'] = df.groupby((df['Col2'] != df['Col2'].shift(1)).cumsum()).cumcount()+1
print(df)
预期结果:
result = {'Col1':[1, 2, 3, 3, 3, 3, 3, 3, 4, 4 ], 'Col2':[1, 1, 1, 1, 1, 2, 2, 2, 2, 2] ,'Counter':[1, 1, 1, 2, 3, 1, 2, 3, 1, 2]}
result = pd.DataFrame(result)
print(result)
我真的希望有人知道怎么做。提前感谢!:) 试试看:
df['Counter'] = df.groupby(( (df['Col1'] != df['Col1'].shift(1)) | (df['Col2'] != df['Col2'].shift(1)) ).cumsum()).cumcount()+1
告诉我们你到目前为止做了什么…@Yohst我加了一个例子!