我有一个数据帧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。请查看是否可以帮助我。谢谢!
答案 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)