如何基于一个公共列但重复的值合并两个数据帧?

2024-04-26 03:47:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列相同但数据不同的数据帧。一个是包含20000个条目的样本数据集,另一个是包含1093564个条目的控制数据集。我想从控制数据集中提取相同数量的记录,这些记录与示例数据集中的日志名称相同,但文章(标题)是唯一的。你知道吗

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

Tags: 数据目的名称标题footitle记录bar
1条回答
网友
1楼 · 发布于 2024-04-26 03:47:41

^{}与left join一起使用,但首先需要创建计数器列,以便与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

相关问题 更多 >

    热门问题