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

Vib*_*bhu 2 python dataframe pandas

我有一个df看起来像这样的数据框:

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

Name Countries
Alex Japan
Joe  Japan, India
Run Code Online (Sandbox Code Playgroud)

所以我想以这样的方式修改 df,当我实现时df['Countries'].value_coun ts(),我得到

Japan 2
India 1
Run Code Online (Sandbox Code Playgroud)

所以我想我应该df['Countries']使用这个将这些字符串转换成一个列表:

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

    Name    Countries
0   Alex    [Japan]
1   Bob [Japan, India]
Run Code Online (Sandbox Code Playgroud)

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

TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)

我希望的是,当我运行 a 时,.values_counts()我会为日本获得 2 分,为印度获得 1 分。请看看你能不能帮我解决这个问题。谢谢!

jez*_*ael 5

使用Series.str.split与重塑DataFrame.stackSeries,所以可能使用value_counts

s = df['Countries'].str.split(', ', expand=True).stack().value_counts()
print (s)
Japan    2
India    1
dtype: int64
Run Code Online (Sandbox Code Playgroud)