簡體   English   中英

pandas:將列附加到 df,這是另一個 df 的 prat

[英]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 的c1c2列上進行了“內部”連接(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.

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