用Pandas合并两个不同的数据帧

2024-10-01 02:18:22 发布

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

我是新来的熊猫,我需要完成以下任务,有没有有效的方法呢? 有两种不同的数据帧,dfa和dfb: dfa

dfb

我用这个把它们合并在一起:

df = pd.merge(dfa, dfb, left_on = ['a_retry','a_cca', 'a_rssif', 'a_lqif'], right_on = ['b_retry','b_cca', 'b_rssif', 'b_lqif'])

我得到了测向输出: df

然而,这不是我的期望。 合并后的数据帧包含所有列,可以,但是行不能超过较小的一行(aka)。dfa),这意味着必须删除第3行,预期的是: enter image description here 我该怎么做?谢谢


Tags: 数据方法rightdfonmergeleftaka
1条回答
网友
1楼 · 发布于 2024-10-01 02:18:22

这是意料之中的,因为每4列都有重复项

所以需要通过^{}删除重复的行:

dfa = dfa.drop_duplicates(subset=['a_retry','a_cca', 'a_rssif', 'a_lqif'])
dfb = dfb.drop_duplicates(subset=['b_retry','b_cca', 'b_rssif', 'b_lqif'])

但是如果需要匹配重复的行,是否可以使用^{}的新列,它用于merge

dfa['new'] = dfa.groupby(['a_retry','a_cca', 'a_rssif', 'a_lqif']).cumcount()
dfb['new'] = dfb.groupby(['b_retry','b_cca', 'b_rssif', 'b_lqif']).cumcount()

df = (pd.merge(dfa, 
               dfb, 
               left_on = ['a_retry','a_cca', 'a_rssif', 'a_lqif', 'new'], 
               right_on = ['b_retry','b_cca', 'b_rssif','b_lqif', 'new']).drop('new', axis=1))

相关问题 更多 >