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 分。请看看你能不能帮我解决这个问题。谢谢!
使用Series.str.split与重塑DataFrame.stack的Series,所以可能使用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)
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |