在数据框B列中,检查哪个值连续出现相同的值,以及多少次具有相同的值。
df = pd.DataFrame({'A':[1,3,4,7,8,11,1,15,20,15,16,87],
'B':[1,3,4,6,11,11,11,11,11,15,16,16]})
df_out=pd.DataFrame({'value':[11],
'values count':[5]})
首先按不等于且Series.shift
具有累加总和的顺序仅获取连续的组,并按:获取所有重复项Series.duplicated
,最后按GroupBy.size
:
df1 = (df[df.B.ne(df.B.shift()).cumsum().duplicated(keep=False)]
.groupby(df['B'].rename('value'))
.size()
.reset_index(name='count'))
print (df1)
value count
0 11 5
详细资料:
print (df[df.B.ne(df.B.shift()).cumsum().duplicated(keep=False)])
A B
4 8 11
5 11 11
6 1 11
7 15 11
8 20 11
或Series.value_counts
用于计数:
df2 = (df.loc[df.B.ne(df.B.shift()).cumsum().duplicated(keep=False), 'B']
.value_counts()
.rename_axis('value')
.reset_index(name='count'))
print (df2)
value count
0 11 5
似乎输入数据在编辑后已更改,因此最后16
创建新组:
df = pd.DataFrame({'A':[1,3,4,7,8,11,1,15,20,15,16,87],
'B':[1,3,4,6,11,11,11,11,11,15,16,16]})
df1 = (df[df.B.ne(df.B.shift()).cumsum().duplicated(keep=False)]
.groupby(df['B'].rename('value'))
.size()
.reset_index(name='count'))
print (df1)
value count
0 11 5
1 16 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句