Jer*_*uke 3 python regex split pandas
我有一列有 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']
Run Code Online (Sandbox Code Playgroud)
这是我为获得第二部分所做的工作:
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)
Run Code Online (Sandbox Code Playgroud)
我能够将唯一的字符串值放入列表中,但有更好的方法吗?
'过度生长' - 3
'叶绿素' - 3
'火焰' - 3
'Sheild Dust' - 2 .... 等等
(顺便说一下,列的名称'abilities'来自数据框df_pokemon。)
由于值是字符串,您可以使用 regex 和 split 将它们转换为列表然后使用 itertools 就像@JonClements 在评论中提到的那样计数即
from collections import Counter
count = pd.Series(df['abilities'].str.replace('[\[\]\']','').str.split(',').map(Counter).sum())
Run Code Online (Sandbox Code Playgroud)
输出:
大啄木鸟 3 叶绿素3 雨碟 3 逃跑 2 狙击手1 太阳能 3 纠结的脚 3 有色镜片 1 烈焰3 复眼1 敏锐之眼 3 过度生长 3 脱皮 2 盾之尘 2 蜂群 1 洪流3 数据类型:int64 数据类型:int64
为了制作只有唯一值的列表,然后 count[count==1].index.tolist()
['Sniper', 'Tinted Lens', 'Compoundeyes', 'Swarm']
Run Code Online (Sandbox Code Playgroud)
然后制作索引列表
count.index.tolist()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4398 次 |
| 最近记录: |