我有一个熊猫数据帧,我想在其中计算一列中特定字符串的连续出现次数.
假设我有以下数据帧.
col1
0 string1
1 string1
2 string1
3 string2
4 string3
5 string3
6 string1
我想将a定义为最大连续出现次数,例如string1或col1中的任何其他字符串.
在这种情况下,如果我想搜索string1并返回2为string3,则ashould返回3.
如何实现?
解决方法:
可以做分组连续值的常用技巧:
df1 = df.groupby((df.col1 != df.col1.shift()).cumsum().rename(None)).col1.agg(['size', 'first'])
# size first
#1 3 string1
#2 1 string2
#3 2 string3
#4 1 string1
然后sort_values drop_duplicates找到最大的:
df1 = df1.sort_values('size').drop_duplicates('first', keep='last').set_index('first').rename_axis(None)
# size
#string2 1
#string3 2
#string1 3
所以现在你可以轻松查找它们:
df1.loc['string1']
#size 3
#Name: string1, dtype: int64