微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算数据框中的连续重复元素并将它们存储在新列中

如何解决计算数据框中的连续重复元素并将它们存储在新列中

我正在尝试计算数据框中的连续元素并将它们存储在新列中。我不想计算一个元素在列表中整体出现的总次数,而是它连续出现的次数,我使用了这个:

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 举报,一经查实,本站将立刻删除。