【发布时间】:2018-03-26 09:34:55
【问题描述】:
我有一列有 800 多行,如下所示:
0 ['Overgrow', 'Chlorophyll']
1 ['Overgrow', 'Chlorophyll']
2 ['Overgrow', 'Chlorophyll']
3 ['Blaze', 'Solar Power']
4 ['Blaze', 'Solar Power']
5 ['Blaze', 'Solar Power']
6 ['Torrent', 'Rain Dish']
7 ['Torrent', 'Rain Dish']
8 ['Torrent', 'Rain Dish']
9 ['Shield Dust', 'Run Away']
10 ['Shed Skin']
11 ['Compoundeyes', 'Tinted Lens']
12 ['Shield Dust', 'Run Away']
13 ['Shed Skin']
14 ['Swarm', 'Sniper']
15 ['Keen Eye', 'Tangled Feet', 'Big Pecks']
16 ['Keen Eye', 'Tangled Feet', 'Big Pecks']
17 ['Keen Eye', 'Tangled Feet', 'Big Pecks']
我想要什么?
- 我想统计每个字符串值出现的次数。
- 我还想将唯一的字符串值排列到一个列表中。
这是我为获得第二部分所做的工作:
list_ability = df_pokemon['abilities'].tolist()
new_list = []
for i in range(0, len(list_ability)):
m = re.findall(r"'(.*?)'", list_ability[i], re.DOTALL)
for j in range(0, len(m)):
new_list.append(m[j])
list1 = set(new_list)
我可以将唯一的字符串值放入一个列表中,但是有更好的方法吗?
示例:
'过度生长' - 3
'叶绿素' - 3
'火焰' - 3
'Sheild Dust' - 2 .... 以此类推
(顺便说一下,数据框df_pokemon中的列名是'abilities'。)
【问题讨论】:
-
你试过
from collections import Counter; counts = df_pokemon.abilities.map(Counter).sum()吗? -
@JonClements 它正在返回每个字母和特殊字符的出现次数..
-
@JonClements 提到的标题是否适合这个问题?