簡體   English   中英

計算數據幀列中字符串的最大連續出現次數

[英]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定義為最大連續出現次數,例如string1col1任何其他字符串。

在這種情況下, a應該返回3 ,如果我想搜索string1 ,並返回2string3

如何實現?

可以做分組連續值的常用技巧:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM