我正在玩Kaggle数据集“欧洲足球数据库”,并希望将其与另一个FIFA18数据集结合使用。
我的问题是这两个数据集中的名称列使用不同的格式。
例如:“lionel messi”在一个数据集中,另一个是“L. Messi”
我会将“L. Messi”转换为数据集中所有行的小写版本“lionel messi”。
最明智的方法是什么?
答案 0 :(得分:0)
一种简单的方法是将两个数据框中的名称转换为通用格式,以便匹配。*让我们假设df1
名称中的L. Messi
格式为df2
个名称采用lionel messi
格式。常见的格式是什么样的?您有多个选择,但一个选项全部为小写,只有第一个首字母后跟一个句点: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')
*注意:这种做法完全取决于名称" matchable"通过这种方式。有很多案例可能导致这种简单的方法失败。如果一个团队有两个成员Abby Wambach
和Aaron Wambach
,他们都会看起来像a. wambach
。如果一个数据框试图通过使用其名称中的其他首字母来区分它们,例如m.a. wambach
和a.k. wambach
,则天真匹配将失败。你如何处理这个取决于你的数据大小 - 也许你可以尝试这种方式匹配大多数玩家,看看谁被丢弃,并从中编写自定义代码。