如何解决计算数据框中的连续重复元素并将它们存储在新列中
我正在尝试计算数据框中的连续元素并将它们存储在新列中。我不想计算一个元素在列表中整体出现的总次数,而是它连续出现的次数,我使用了这个:
a=[1,1,3,5,6,2,0]
df = pd.DataFrame(list(zip(a)),columns =['Patch'])
df['count'] = df.groupby('Patch').Patch.transform('size')
print(df)
这给了我这样的结果:
Patch count
0 1 2
1 1 2
2 3 5
3 3 5
4 3 5
5 5 1
6 6 1
7 3 5
8 3 5
9 0 4
10 0 4
11 0 4
12 2 3
13 2 3
14 2 3
15 0 4
但是我希望结果是这样的:
Patch count
0 1 2
1 3 3
2 5 1
3 6 1
4 3 2
5 0 3
6 2 3
7 0 1
解决方法
df = (
df.groupby((df.Patch != df.Patch.shift(1)).cumsum())
.agg({"Patch": ("first","count")})
.reset_index(drop=True)
.droplevel(level=0,axis=1)
.rename(columns={"first": "Patch"})
)
print(df)
打印:
Patch count
0 1 2
1 3 3
2 5 1
3 6 1
4 3 2
5 0 3
6 2 3
7 0 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。