如何计算熊猫系列列表中每个元素的出现次数?
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_counts
df['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
【讨论】:
以上是关于如何计算熊猫系列列表中每个元素的出现次数?的主要内容,如果未能解决你的问题,请参考以下文章