【问题标题】:How to merge two datasets by specific column in pandas如何按熊猫中的特定列合并两个数据集
【发布时间】:2017-10-20 12:18:42
【问题描述】:

我正在使用 Kaggle 数据集“欧洲足球数据库”,并希望将其与另一个 FIFA18 数据集结合起来。

我的问题是这两个数据集中的名称列使用不同的格式。

例如:一个数据集中是“lionel messi”,另一个是“L. Messi”

我会为数据集中的所有行将“L. Messi”转换为小写版本“lionel messi”。

解决这个问题最明智的方法是什么?

【问题讨论】:

标签: python pandas


【解决方案1】:

一种简单的方法是将两个数据帧中的名称转换为通用格式,以便它们可以匹配。* 假设df1 中的名称为L. Messi 格式,df2 中的名称为@ 987654324@ 格式。常见的格式是什么样的?您有多种选择,但一个选项是全部小写,只有第一个首字母后跟一个句点:l. messi

df1 = pd.DataFrame({'names': ['L. Messi'], 'x': [1]})
df2 = pd.DataFrame({'names': ['lionel messi'], 'y': [2]})

df1.names = df1.names.str.lower()
df2.names = df2.names.apply(lambda n: n[0] + '.' + n[n.find(' '):])

df = df1.merge(df2, left_on='names', right_on='names')

*注意:这种方法完全依赖于名称以这种方式“可匹配”。有很多情况可能导致这种简单的方法失败。如果一个团队有两个成员,Abby WambachAaron Wambach,它们看起来都像 a. wambach。如果一个数据框试图通过在其名称中使用其他首字母来区分它们,例如m.a. wambacha.k. wambach,那么简单匹配将失败。你如何处理这取决于你的数据大小——也许你可以尝试以这种方式匹配大多数玩家,看看谁被淘汰,并为他们编写自定义代码。

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 2020-04-24
    • 1970-01-01
    • 2017-10-21
    • 2018-08-19
    • 2017-06-11
    • 2016-01-01
    相关资源
    最近更新 更多