我有两个具有相同列但数据不同的数据框。一个是包含20,000个条目的样本数据集,另一个是包含1,093,564个条目的控制数据集。我想从控件数据集中提取相同数量的记录,这些记录的日记名称与示例数据集中的日记名称相同,但文章(标题)唯一。
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
答案 0 :(得分:1)
将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