python - 如何替换多个熊猫列中列表中包含的值
问题描述
我有以下df:
Q4_1 Q4_2 Q4_3 Q4_4 \
130 far cry 4 NaN NaN NaN
131 grand theft auto Assassins Creed call of duty watch dogs
132 the elder scrolls v the witcher 3 dragon age dark souls
133 Uncharted Call of duty Deadpool Far cry
134 Monster Hunter: World Kingdom Hearts III Darksiders III NaN
135 Fallout 4 NaN NaN NaN
Q4_5 Q4_6 Q4_7 Q4_8 Q4_9 Q4_10
130 NaN NaN NaN NaN NaN NaN
131 NaN NaN NaN NaN NaN NaN
132 fallout assassins creed fallout 3 NaN NaN NaN
133 Grand theft auto NaN NaN NaN NaN NaN
134 NaN NaN NaN NaN NaN NaN
135 NaN NaN NaN NaN NaN NaN
我想用基于列表的唯一标识字符串替换相似的字符串。所以这将是所需的输出:
Q4_1 Q4_2 Q4_3 Q4_4 \
130 far cry 4 NaN NaN NaN
131 grand theft auto Assassin's Creed call of duty watch dogs
132 the elder scrolls v the witcher 3 dragon age dark souls
133 Uncharted Call of duty Deadpool Far cry
134 Monster Hunter: World Kingdom Hearts III Darksiders III NaN
135 Fallout 4 NaN NaN NaN
Q4_5 Q4_6 Q4_7 Q4_8 Q4_9 Q4_10
130 NaN NaN NaN NaN NaN NaN
131 NaN NaN NaN NaN NaN NaN
132 fallout Assassin's Creed fallout 3 NaN NaN NaN
133 Grand theft auto NaN NaN NaN NaN NaN
134 NaN NaN NaN NaN NaN NaN
135 NaN NaN NaN NaN NaN NaN
所以我已经得到了一组可以找到的值:
list_assasins_creed = ['Assasin\'s Creed', 'Assassin\'s Creed', 'Assassins Creed', 'assasins creed', 'assassin\'s creed', 'assassins creed']
该值可以在多个列中找到 (Q4_1..Q4_9)
我想用刺客信条替换这些值。我尝试使用 loc:
df_survey_Q4.loc[df_survey_Q4[['Q4_1', 'Q4_2', 'Q4_3', 'Q4_4', 'Q4_5', 'Q4_6', 'Q4_7', 'Q4_8','Q4_9', 'Q4_10']].isin(list_assasins_creed),['Q4_1', 'Q4_2', 'Q4_3', 'Q4_4', 'Q4_5', 'Q4_6', 'Q4_7', 'Q4_8','Q4_9', 'Q4_10']] = 'Assassin\'s Creed'
但我得到了这个错误:
KeyError: "None of [Index([ ('Q', '4', '_', '1'), ('Q', '4', '_', '2'),\n ('Q', '4', '_', '3'), ('Q', '4', '_', '4'),\n ('Q', '4', '_', '5'), ('Q', '4', '_', '6'),\n ('Q', '4', '_', '7'), ('Q', '4', '_', '8'),\n ('Q', '4', '_', '9'), ('Q', '4', '_', '1', '0')],\n dtype='object')] are in the [index]"
知道我该怎么做吗?
解决方案
你可以写这样的代码,
df.replace( ['Assasin\'s Creed', 'Assassin\'s Creed', 'Assassins Creed',
'assasins creed', 'assassin\'s creed', 'assassins creed'] , 'assasian' )
推荐阅读
- wordpress - 如何最好地实例化多个克隆站点并维护它们?
- ruby - 有条件地重启服务
- database - 实体关系图字段组合唯一性表示
- php - 如果密码包含在要解析的字符串中,Password_verify() 给出 true
- jboss - 使用 SPI 配置 Keycloak 提供程序
- tidymodels - 将 initial_time_split 与 drake 一起使用时出错
- laravel - Cpanel Laravel 软件包安装被“杀死”
- flutter - 如何用颤振在android中实现(完成)按钮
- python - 通过与其他列表中的列表匹配来过滤列表列表
- html - Boostrap 填充 (p-)