我有兩個pandas DataFrame,其中第一個DataFrame有兩列。"a "和 "id",第二個DataFrame有兩列。"id "和 "color_value"。我想比較兩個DataFrame之間的id,如果有匹配的,就在第一個DataFrame中添加一個帶有正確顏色_value的列。實質上,我正在使用第二個 DataFrame 作為查找表來查找正確的 ID 并將其與相應的顏色值相匹配。
見下文。
df_1 = pd. DataFrame({'a'/span>: [1, 2, 3, 4, 5], 'id'/span>: ['001'/span>, '002'/span>, '001'/span>, '004'/span>, '003'/span>]})
df_2 = pd. DataFrame({'id': ['001', '002', '003', '004'], 'color_value': ['blue', 'red', 'yellow', 'orange']})
所以df1:
a id
1 001
2 002
3 001
4 004
5 003
df2:
id color_value
001 藍色
002 紅色
003 黃色
004 橙色
我需要一種方法來匹配ID 從df1 和df2 和添加color_value列到df1,所以結果是。
df1:
a id color_value
1 001 blue
2 002 紅色
3 001藍色
4 004橙色
5 003 黃色
uj5u.com熱心網友回復:
你可以通過使用.set_index()(作為映射的鍵)來設定df_2,并以color_value列(作為映射的值)形成一個映射。
然后,你可以通過使用.map()將df_1中的id映射到該映射,如下所示:
df_1['color_value'] = df_1['id'] 。 map(df_2.set_index('id')['color_value'])
或者把它分成兩行,以提高可讀性/更容易理解,如下:
mapping = df_2.set_index('id') ['color_value']
df_1['color_value'] = df_1['id'].map(mapping)
結果:
print(df_1)
a id color_value
0 1 001 blue
1 2 002 紅色
2 3 001 blue
3 4 004橙色
4 5 003 黃色
uj5u.com熱心網友回復:
這正是pandas合并的作用! 有不同型別的合并,但你正在尋找的合并被稱為 "左 "合并。這意味著在最終的資料框架中,你的第一個資料框架中的所有記錄都將在那里,只與你的第二個資料框架中具有匹配 id 的記錄連接。
想象一下,您的第一個資料框架被稱為 "左 "資料框架,而您的第二個資料框架是 "右 "資料框架。您的 id 列充當 "鍵",持有兩個資料框架之間可能匹配的值。
你可以這樣使用合并函式來實作你的目標:
你可以使用合并函式來實作你的目標。
merged_df = df_1.merge(df_2, how='left'/span>, on='id'/span>)
"how "引數是你輸入你想做的合并的地方(一個左合并)。引數 "on "是你輸入關鍵列名(id列)的地方。
結果:
df_1:
a id。
0 1 001
1 2 002
2 3 001
3 4 004
4 5 003
df_2:
color_value id 5 003 df_2.
0 藍色 001
1 red 002
2 黃色 003
3 橙色 004
merged_df:
a id color_value
0 1 001 blue
1 2 002 紅色
2 3 001 blue
3 4 004橙色
4 5 003 黃色
更多資訊:
合并函式的檔案(例子很有幫助)。Pandas.DataFrame.merge
還有一個關于不同型別的合并的更多資訊的帖子。Pandas合并101
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/332408.html
標籤:
上一篇:《程式員的自我修養》導讀
