簡體   English   中英

如何基於公共列但值重復來合並兩個數據框?

[英]How to merge two dataframes based on a common column but duplicated values?

我有兩個具有相同列但數據不同的數據框。 一個是包含20,000個條目的樣本數據集,另一個是包含1,093,564個條目的控制數據集。 我想從控件數據集中提取相同數量的記錄,這些記錄的日志名稱與示例數據集中的日志名稱相同,但是唯一的article(title)。

DF1:

journal title
foo abs
bar abc
baz ghj
foo jkl
baz mnj

DF2:

journal title
bar nko
foo cvb
foo yui
baz sdf 
bar hyt
foo kdm
baz bnd
baz lko
foo mnx
bar sdm
baz rty    

兩個數據集中的日記名稱相同,但標題是唯一的,並且在df1中與df2不同。 我想要這樣的結果:

journal title_x title_y
foo abs cvb
bar abc nko
baz ghj sdf
foo jkl kdm
baz mnj bnd

merge與左連接一起使用,但首先需要創建計數器列,以便與df2['journal']刪除連續重復的值進行合並,並使用不相等的移位值進行比較:

df1['g'] = df1.groupby('journal').cumcount()
df2 = df2[df2['journal'].ne(df2['journal'].shift())]
df2['g'] = df2.groupby('journal').cumcount()

df = df1.merge(df2, on=['journal','g'], how='left').drop('g', axis=1)
print (df)
  journal title_x title_y
0     foo     abs     cvb
1     bar     abc     nko
2     baz     ghj     sdf
3     foo     jkl     kdm
4     baz     mnj     bnd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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