如何将.values_counts()用于数据框中的列表项

时间:2019-05-13 10:19:35

标签: python pandas dataframe

我有一个数据帧df,看起来像这样:

data = [['Alex','Japan'],['Joe','Japan, India']]
df = pd.DataFrame(data,columns=['Name','Countries'])

Name Countries
Alex Japan
Joe  Japan, India

因此,我要进行修改 df,以便在实现df['Countries'].value_coun ts()时得到

Japan 2
India 1

所以我认为我应该使用以下命令将df['Countries']中的那些字符串转换为列表:

df['Countries']= df['Countries'].str[0:].str.split(',').tolist()

    Name    Countries
0   Alex    [Japan]
1   Bob [Japan, India]

但是现在当我运行df['Countries'].value_counts()时,出现以下错误:

TypeError: unhashable type: 'list'

我所希望的是,当我运行.values_counts()时,日本得到2,印度得到1。请查看是否可以帮助我。谢谢!

2 个答案:

答案 0 :(得分:4)

Series.str.split用于Series,将DataFrame.stack重塑为value_counts,因此可以使用s = df['Countries'].str.split(', ', expand=True).stack().value_counts() print (s) Japan 2 India 1 dtype: int64

{{1}}

答案 1 :(得分:3)

使用series.str.get_dummies()的另一种方法:

df.Countries.str.get_dummies(',').sum()

India     1
Japan     2