This question already has answers here:
How to groupby consecutive values in pandas DataFrame
(2个答案)
12个月前关闭。
我有一个像这样的数据框:
我想添加一列以计数继续发生我的值,如下所示:
我可以使用循环来执行此操作,但是由于我的数据集非常庞大,因此需要花费很长时间!
(2个答案)
12个月前关闭。
我有一个像这样的数据框:
index value
---- -----
1 A
2 A
3 A
4 A
5 B
6 B
7 A
8 B
9 C
10 C
我想添加一列以计数继续发生我的值,如下所示:
index value continues-count
---- ----- ----------
1 A 1
2 A 2
3 A 3
4 A 4
5 B 1
6 B 2
7 A 1
8 B 1
9 C 1
10 C 2
我可以使用循环来执行此操作,但是由于我的数据集非常庞大,因此需要花费很长时间!
最佳答案
使用shift
和cumsum
太无聊了,让我们尝试itertools
import itertools
df['New']=list(itertools.chain(*[list(range(len(list(y))))for _,y in itertools.groupby(df.value)]))
df
Out[596]:
index value New
0 1 A 0
1 2 A 1
2 3 A 2
3 4 A 3
4 5 B 0
5 6 B 1
6 7 A 0
7 8 B 0
8 9 C 0
9 10 C 1
pandas
方式df['New']=df.groupby((df.value!=df.value.shift()).ne(0).cumsum()).cumcount()+1
关于python - 计数继续在列中出现值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55033122/
10-12 17:47