python - 如何使用第二个数据框中的正确拼写匹配和替换数据框中拼写错误的字符串值?
问题描述
我需要用正确的拼写替换数据框中的大量拼写错误的值。这将是一个持续的过程,因为数据集将继续更新,因此需要尽可能高效地完成。
首先想到了两个明显的解决方案:
1) 数据框.replace()
2)使用不正确的值作为键将数据框与另一个数据框合并
由于多种原因,这些选项似乎不是我的问题的实际解决方案。
对于解决方案 1 (dataframe.replace()),我只是有太多需要替换的值,以便在每次摄取新数据时继续添加一行又一行的 df.replace 命令。
对于解决方案 2(合并数据框),我有十多个列需要更改,因此我必须创建许多单独的数据框,其中一些与我用作键的列名称相同合并。
下面是我(理想情况下)使用的两个数据框的简单示例。
df1:
ResponseID InputA InputB
-------------------------------------
|ABC123 | Chikcen | First |
|DEF456 | Cwo | Second |
|GHI789 | Dog | Third |
-------------------------------------
df2:
Old_Value New_Value
---------------------------
|Chikcen | CHICKEN |
|Cwo | COW |
|Dog | DOG |
|First | 1 |
|Second | 2 |
|Third | 3 |
---------------------------
我想针对 df2 中的 Old_Value 列运行 df1 中的那些列(InputA 和 InputB),并将这些值替换为 New_Value 列中的相应值。
理想情况下,它将产生以下数据框
df_final:
ResponseID InputA InputB
-------------------------------------
|ABC123 | CHICKEN | 1 |
|DEF456 | COW | 2 |
|GHI789 | DOG | 3 |
-------------------------------------
如果这确实是可能的,我无法想象解决方案会非常复杂。我的问题是我不知道这种类型的过程甚至会被命名为在某处寻找预先存在的答案。谢谢
解决方案
final_df=df1.copy()
final_df['InputA']=final_df['InputA'].map(df2.set_index('Old_Value')['New_Value'])
final_df['InputB']=final_df['InputB'].map(df2.set_index('Old_Value')['New_Value'])
print(final_df)
ResponseID InputA InputB
0 ABC123 CHICKEN 1
1 DEF456 COW 2
2 GHI789 DOG 3
推荐阅读
- javascript - 检查两个数组中各个元素之间的值
- node.js - 我想在nodejs中设置处理用户和管理员角色的代码
- heroku - 无法在 Mac 上安装 Heroku,它说 Apple 无法检查它是否存在恶意软件
- python - 三角分布随机变量
- javascript - 映射数组对象和更新状态变量。数据丢失
- php - foreach 循环循环显示要在单独表中显示的日期数组
- python - 将值传递给python中的文件
- python - 是否可以在 pydantic 中使用任意键名?
- java - 如何仅计算和存储 JTable 中可见的内容?
- javascript - 为什么我的复选框没有使用 Redux 更新?