首页 > 解决方案 > 替换一列各种字符串

问题描述

我正在对来自Kaggle 比赛的 PUBG 数据做一些 EDA 。我想将常见的游戏模式转换为标准形式的单人、双人、小队、耀斑和碰撞

以下是唯一值列表:

{'flaretpp', 'crashtpp', 'squad-fpp', 'duo-fpp', 'crashfpp', 'normal-squad',
'normal-squad-fpp', 'normal-duo-fpp', 'normal-duo', 'normal-solo', 'squad',
'duo', 'solo-fpp', 'solo', 'normal-solo-fpp', 'flarefpp'}

我基本上想从值中删除“normal-”、“-fpp”、“fpp”和“tpp”子字符串。

我有一些有效的代码,但速度很慢(大约有 450 万行)。我想知道是否有更快/更好的方法来做到这一点?

for i in range(len(data['matchType'])):
    data['matchType'][i] = data['matchType'][i].replace('normal-','')
    data['matchType'][i] = data['matchType'][i].replace('-fpp','')
    data['matchType'][i] = data['matchType'][i].replace('tpp','')
    data['matchType'][i] = data['matchType'][i].replace('fpp','')

标签: pythonpython-3.xstr-replace

解决方案


将您的数据加载到 Pandas 系列中并使用单个命令完成:

mymode.str.replace(r'normal-|-fpp|fpp|tpp', '')

使用您的示例数据,您可以:

0     flare
1     crash
2     squad
3       duo
4     crash
5     squad
6     squad
7       duo
8       duo
9      solo
10    squad
11      duo
12     solo
13     solo
14     solo
15    flare

推荐阅读