[英]Count maximum consecutive occurences of a string in a dataframe column
我有一個熊貓數據幀,我想在其中計算一列中特定字符串的連續出現次數。
假設我有以下數據幀。
col1
0 string1
1 string1
2 string1
3 string2
4 string3
5 string3
6 string1
我想將a
定義為最大連續出現次數,例如string1
或col1
任何其他字符串。
在這種情況下, a
應該返回3
,如果我想搜索string1
,並返回2
的string3
。
如何實現?
可以做分組連續值的常用技巧:
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
只是itertools
groupby
,這里的順序與原始df保持一致
import itertools
pd.DataFrame([x,len(list(y))] for x , y in itertools.groupby(df['col1']))
Out[92]:
0 1
0 string1 3
1 string2 1
2 string3 2
3 string1 1
pd.DataFrame([x,len(list(y))] for x , y in itertools.groupby(df['col1'])).groupby(0)[1].max()
Out[94]:
0
string1 3
string2 1
string3 2
Name: 1, dtype: int64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.