Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得数据框中列表中每个元素的频率分布?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何获得数据框中列表中每个元素的频率分布?

Python 如何获得数据框中列表中每个元素的频率分布?,python,pandas,dataframe,Python,Pandas,Dataframe,我试图得到这个数据框中标签的频率分布 问题是每一行都包含一个标记列表,而不仅仅是一个。因此,我不能使用 df['Tags'].value_counts() 那么我该怎么做呢?对于熊猫0.25+使用: 另一个使用DataFrame构造函数的解决方案,也适用于0.25下的版本: s = pd.DataFrame(df['Tags'].tolist()).stack().value_counts() 或者可以将纯python与计数器一起使用并展平: from collections impor

我试图得到这个数据框中标签的频率分布

问题是每一行都包含一个标记列表,而不仅仅是一个。因此,我不能使用

df['Tags'].value_counts()
那么我该怎么做呢?

对于熊猫0.25+使用:

另一个使用DataFrame构造函数的解决方案,也适用于
0.25下的版本:

s = pd.DataFrame(df['Tags'].tolist()).stack().value_counts()

或者可以将纯python与
计数器
一起使用并展平:

from collections import Counter

s = pd.Series(Counter([y for x in df['Tags'] for y in x]))
样本

df = pd.DataFrame({'Tags':[['a','b'],['a','b','c'],['c','b','c'], ['c']]})
s = df['Tags'].explode().value_counts()
print(s)
c    4
b    3
a    2
Name: Tags, dtype: int64
df = pd.DataFrame({'Tags':[['a','b'],['a','b','c'],['c','b','c'], ['c']]})
s = df['Tags'].explode().value_counts()
print(s)
c    4
b    3
a    2
Name: Tags, dtype: int64