簡體   English   中英

如何按pandas中的特定列合並兩個數據集

[英]How to merge two datasets by specific column in pandas

我正在使用 Kaggle 數據集“歐洲足球數據庫”,並希望將它與另一個 FIFA18 數據集結合起來。

我的問題是這兩個數據集中的名稱列使用不同的格式。

例如:在一個數據集中是“lionel messi”,而在另一個數據集中是“L. Messi”

對於數據集中的所有行,我會將“L. Messi”轉換為小寫版本“lionel messi”。

解決這個問題的最聰明的方法是什么?

一個簡單的方法是在兩個dataframes的名稱轉換成通用格式,使他們能夠匹配。*假設在df1的名字都在L. Messi格式和df2的名字都在lionel messi格式。 常見的格式是什么樣的? 您有多種選擇,但一個選項都是小寫,只有第一個首字母后跟一個句點: l. 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')

*注意:這種方法完全依賴於以這種方式“匹配”的名稱。 有很多情況可能會導致這種簡單的方法失敗。 如果一個團隊有兩個成員, Abby WambachAaron Wambach ,他們看起來都像a. wambach a. wambach 如果一個數據框試圖通過在名稱中使用其他首字母來區分它們,例如ma wambachak wambach ,則朴素匹配將失敗。 你如何處理這取決於你的數據大小——也許你可以嘗試以這種方式匹配大多數玩家,看看誰被淘汰,並為他們編寫自定義代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM