[英]pandas : appending columns to df that is prat of another df
我有 2 個 pandas 數據幀:
df1:
c1 | c2 | X |
---|---|---|
1個 | 1個 | 1個 |
2個 | 1個 | 4個 |
1個 | 2個 | 1個 |
2個 | 2個 | 4個 |
和 df2:
c1 | c2 | c3 |
---|---|---|
1個 | 1個 | 1個 |
1個 | 2個 | 1個 |
2個 | 2個 | 2個 |
我想 append x
行到df2
像:
c1 | c2 | c3 | X |
---|---|---|---|
1個 | 1個 | 1個 | 1個 |
1個 | 2個 | 1個 | 1個 |
2個 | 2個 | 2個 | 4個 |
我嘗試使用join
,但因為我沒有唯一索引,所以它不起作用:
df1.set_index(['c1', 'c2'], inplace=True)
df2.set_index(['c1', 'c2'], inplace=True,drop=False)
df2=df2.join(df1)
df2:
c1 | c2 | c3 | X |
---|---|---|---|
1個 | 1個 | 1個 | 楠 |
1個 | 2個 | 1個 | 楠 |
2個 | 2個 | 2個 | 楠 |
也許做你的問題所問的最簡單的方法是這樣的:
df2 = pd.merge(df2, df1, on=['c1', 'c2'])
我們在數據幀 df1 和 df2 的c1
和c2
列上進行了“內部”連接(pandas.merge() 的默認值)。
或者,這是一種使用 DataFrame.join() 獲得指定結果的方法,其方法類似於您根據問題嘗試過的方法:
df2 = df2.set_index(['c1', 'c2']).join(df1.set_index(['c1', 'c2'])).reset_index()
結果:
c1 c2 c3 x
0 1 1 1 1
1 1 2 1 1
2 2 2 2 4
請注意, inplace
已被刪除,因為通常不鼓勵使用它,我們現在提前 go 並允許 df2 的 c1 和 c2 列被 set_index() 刪除,稍后使用 reset_index() 來恢復它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.