如何计算熊猫系列列表中每个元素的出现次数?

Posted

技术标签:

【中文标题】如何计算熊猫系列列表中每个元素的出现次数?【英文标题】:How to count occurrence of each element in pandas series of lists? 【发布时间】:2020-07-24 07:48:45 【问题描述】:

我是一个新手,非常坚持我的 python 项目。我有一个包含列表的熊猫系列,如下所示:

>> df.head()
>> column1       
   ['A', 'B']
   ['A']
   ['A', 'C']
   ['A', 'B', 'C']
   ['B']

想要的输出应该是这样的:

>> column1   column2
    'A'         4
    'B'         3
    'C'         2

column1 是字符串还是包含一个元素的列表都没有关系。

我试过这些:

df.groupby('column1').count()

df['column1'].value_counts()

但两者都给了我:

TypeError: unhashable type: 'list'

也试过了:

df.groupby('column1')

但它不显示结果。

在此处尝试了解决方案 (How to print a groupby object),但没有一个有效:(

【问题讨论】:

series.explode()然后做value_countsdf['column1'].explode().value_counts() 你好@anky,这是一种新方法吗?它返回:“AttributeError:'Series' 对象没有属性'explode'”。很遗憾,我不允许更新我使用的虚拟机。将在我的本地计算机上尝试。将很快更新。谢谢! :) 是的,你需要 pandas 0.25 或以上,或者你可以做 pd.Series(np.concatenate(df['column1'])).value_counts() 现在可以使用了。太感谢了! :) 【参考方案1】:

试试:

df1['column1'].explode().groupby().count()

df1.explode('column1').groupby('column1').count()

【讨论】:

【参考方案2】:
df.explode('Column1').groupby('Column1').size().reset_index(name='Column2')

输出:

  Column1  Column2
0       A        4
1       B        3
2       C        2

【讨论】:

以上是关于如何计算熊猫系列列表中每个元素的出现次数?的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫将列表中的单词与频率列表中的单词进行比较

如果 pandas 系列的值是一个列表,如何获取每个元素的子列表?

怎样求数组中元素重复的次数

pyspark:计算列表中不同元素的出现次数

如何检索熊猫系列对象中第 n 个元素的值?

计算列表列中两个元素的出现次数