如何按pandas

时间:2017-10-20 12:18:42

标签: python pandas

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

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

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

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

最明智的方法是什么?

1 个答案:

答案 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 WambachAaron Wambach,他们都会看起来像a. wambach。如果一个数据框试图通过使用其名称中的其他首字母来区分它们,例如m.a. wambacha.k. wambach,则天真匹配将失败。你如何处理这个取决于你的数据大小 - 也许你可以尝试这种方式匹配大多数玩家,看看谁被丢弃,并从中编写自定义代码。