python - 数据框中常见列之间的精确视觉匹配在合并时不匹配
问题描述
我正在尝试在一个公共列“long_name”上合并两个数据框。但是当我在“long_name”上合并时,某些名称并没有发生合并,即使看起来像视觉上完全匹配的名称(即“Lionel Andrés Messi Cuccittini”(df1)到“Lionel Andrés Messi Cuccittini”(df2)):
df_merged = df.merge(df1, on="long_name", indicator=True, how='right')
Lionel Messi 被排除在外,根据指标列,他是合并中的“right_only”行。奇怪的是,“内马尔·达席尔瓦·桑托斯·小桑托斯”正在合并。为什么行之间存在差异?两者的来源都是一致的,df 来自 kaggle,df2 来自抓取,并且对所有行名提取使用相同的脚本。
我尝试使用以下代码将 Lionel Messi 条目与 df 和 df1 隔离开来:
name1 = df.loc[df.short_name == 'L. Messi', ["long_name"]]
name2 = df1.loc[df1.name == 'Lionel Messi', ["long_name"]]
name1.values == name2.values
但结果是array([[False]])
。我不确定他们为什么不匹配。
第一个 df 看起来像这样(前 8 行,df = df.loc[0:7,["short_name", "long_name"]]
):
short_name long_name
0 L. Messi Lionel Andrés Messi Cuccittini
1 Cristiano Ronaldo Cristiano Ronaldo dos Santos Aveiro
2 Neymar Jr Neymar da Silva Santos Junior
3 J. Oblak Jan Oblak
4 E. Hazard Eden Hazard
5 K. De Bruyne Kevin De Bruyne
6 M. ter Stegen Marc-André ter Stegen
7 V. van Dijk Virgil van Dijk
第二个 df 看起来像这样(前 8 行,df1 = df1.loc[0:7,["name", "long_name"]]
):
name long_name
0 Kylian Mbappé Kylian Sanmi Mbappé Lottin
1 Neymar Neymar da Silva Santos Júnior
2 Mohamed Salah محمد صلاح
3 Harry Kane Harry Edward Kane
4 Eden Hazard Eden Michael Hazard
5 Lionel Messi Lionel Andrés Messi Cuccitini
6 Raheem Sterling Raheem Shaquille Sterling
7 Antoine Griezmann Antoine Griezmann
解决方案
您确定这不仅仅是名称拼写错误的情况吗?
df
将其long_name
列为Lionel Andrés Messi Cuccittini
,而df1
将其列为Lionel Andrés Messi Cuccitini
。我注意到df
有 2t
的Cuccittini
但df
有 1。
手动更正第二个数据帧并重试。
推荐阅读
- c# - 一起使用 SQLiteConnection 和 SQLiteAsyncConnection
- c# - 列表参数的对象名称在 ForEach 循环之外以 @ 为前缀
- python - 如何使用时间戳 Python 剪切(`trim`)音频
- python-3.x - 如何使用 AWS CDK 将阶段变量传递给 api 网关中的 lambda 函数?
- mdx - 切换不同的措施
- asp.net - 如何用一个 DropDownList 发送两个值/用 2 个输入表单 ASP.NET MVC 发送 3 个值
- javascript - 将属性中包含 HTML 的对象数组转换为 JSX 元素
- vue.js - 在 VeeValidate 和 VueJs 中使用正则表达式进行多重验证
- vue.js - Uncaught SyntaxError: Unexpected token '<' a by Nginx & Vue.js when url with subdirectory
- sql - PostgreSQL:VACUUM FULL 持续时间估计