這個問題在這里已經有了答案: 熊貓合并 101 (6 個答案) 9 小時前關閉。
我有兩個資料框。
import pandas
import numpy as np
data = {'Name': ['Tom', 'Joseph', 'Krish', 'John','rack','rox','selena','jha'], 'Age': [20, 21,np.nan , 18,20,30,np.nan,np.nan]}
df = pd.DataFrame(data)
data = {'Named': ['Raj', 'kir', 'cena','ang'], 'Age': [20, 21,18,30]}
df1 = pd.DataFrame(data)
df =
Name Age
0 Tom 20.0
1 Joseph 21.0
2 Krish NaN
3 John 18.0
4 rack 20.0
5 rox 30.0
6 selena NaN
7 jha NaN
df1=
Named Age
0 Raj 20
1 kir 21
2 cena 18
3 ang 30
df1 是源資料。現在,如果 df1 的 age 列的值與 df 中的 age 列匹配,那么它必須將名稱附加到 df 的 age 列旁邊,并且假設 df 的 age 列中的值為 null 那么它不應該添加任何事物。它也應該為空。它基本上應該根據匹配添加名稱。據我所知,我們可以使用合并,但是當我嘗試合并它時,它會創建額外的行,這并不例外,并且輸出也不正確。
給定輸出和代碼:-
dfinal = df.merge(df, left_on="Age",right_on='Age', how = 'outer')
Name_x Age Name_y
0 Tom 20.0 Tom
1 Tom 20.0 rack
2 rack 20.0 Tom
3 rack 20.0 rack
4 Joseph 21.0 Joseph
5 Krish NaN Krish
6 Krish NaN selena
7 Krish NaN jha
8 selena NaN Krish
9 selena NaN selena
10 selena NaN jha
11 jha NaN Krish
12 jha NaN selena
13 jha NaN jha
14 John 18.0 John
15 rox 30.0 rox
Excepted Output:-
Name Age Named
0 Tom 20.0 Raj
1 Joseph 21.0 kir
2 Krish NaN NaN
3 John 18.0 cena
4 rack 20.0 Raj
5 rox 30.0 ang
6 selena NaN NaN
7 jha NaN NaN
uj5u.com熱心網友回復:
采用how=left
dfinal = df.merge(df1, left_on="Age",right_on='Age', how = 'left')
print(dfinal)
Name Age Named
0 Tom 20.0 Raj
1 Joseph 21.0 kir
2 Krish NaN NaN
3 John 18.0 cena
4 rack 20.0 Raj
5 rox 30.0 ang
6 selena NaN NaN
7 jha NaN NaN
uj5u.com熱心網友回復:
你需要一個左連接:
df.merge(df1, on='Age', how='left')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472059.html
下一篇:關于DockerHub的一些問題
