首页 > 解决方案 > 计算 Pandas 中不同字符串集的元素

问题描述

假设我有以下数据框:

d = {'col1':['apple; kiwi; banana','orange; apple','apple', 'apple, orange, melon']}
df= pd.DataFrame(d)

要得到 :

                   col1
0   apple; kiwi; banana
1         orange; apple
2                 apple
3  apple, orange, melon

我想计算apple与其他水果相关的次数。如果我这样做,df.value_counts()我可以看到每个元素只计算一次。但是,我想知道apple不同单元格长度的时间是多少,因为apple有两个单元格有 3 个字符串,1 个单元格有 2 个字符串,1 个单元格有 1 个字符串。所以结果将是:

   len of string  number for apple
0              1                 1
1              2                 1
2              3                 2

标签: pythonpandas

解决方案


首先使用 s 过滤列apple,然后计算;并添加1由 和 分隔的值的数量,;用于计数Series.value_counts

df = df[df['col1'].str.contains('apple')]
df1= (df['col1'].str.replace(',',';')
                .str.count(';')
                .add(1)
                .value_counts(sort=False)
                .rename_axis('vals')
                .reset_index(name='count'))
print (df1)
   vals  count
0     1      1
1     2      1
2     3      2

推荐阅读