[英]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.