[英]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 Wambach
和Aaron Wambach
,他們看起來都像a. wambach
a. wambach
如果一個數據框試圖通過在名稱中使用其他首字母來區分它們,例如ma wambach
和ak wambach
,則朴素匹配將失敗。 你如何處理這取決於你的數據大小——也許你可以嘗試以這種方式匹配大多數玩家,看看誰被淘汰,並為他們編寫自定義代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.