我是熊猫新手,我需要完成以下任务,有没有一种有效的方法呢? 有两种不同的数据帧,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'])
然而,这不是我的期望。 合并的数据帧包含所有列,没关系,但行不应超过较小的行(也称为dfa),这意味着必须删除行3,预期的行是: 我怎样才能做到这一点?感谢。
答案 0 :(得分:0)
预计,因为所有4列都有重复。
因此需要按drop_duplicates
删除重复行:
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'])
但是如果需要匹配重复的行,是否可以使用cumcount
的新列,该列用于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))