我有df a和df B,如果matchcolumns(颜色和值)同时存在于a和b中,我需要得到df c。我目前掌握的情况:
c = a[a[matchcolumns] == b[matchcolumns]] a color value cost red 0.1 5.99 blue 0.2 6.99 green 0.3 9.99 b color value cost red 0.1 0.9 c color value cost blue 0.2 6.99 green 0.3 9.99
0h4hbjxa1#
看看下面的代码是否给出了您要查找的结果
c = pd.merge(a, b, on=['color', 'value'], how='inner') c.head()
mzsu5hc02#
使用带指示器的外部merge并删除公共行:
merge
cols = ['color', 'value'] c = (a.merge(b[cols], on=cols, how='outer', indicator=True) .loc[lambda d: d.pop('_merge').ne('both')] )
或者,如果两个输入中没有重复项:
c = ( pd.concat([a, b]) .drop_duplicates(subset=cols, keep=False) )
输出:
color value cost 1 blue 0.2 6.99 2 green 0.3 9.99
ykejflvf3#
mrg_idx = pd.merge(a[['color', 'value']],b[['color', 'value']]).index print( a.iloc[mrg_idx] )
color value cost 0 red 0.1 5.99
3条答案
按热度按时间0h4hbjxa1#
看看下面的代码是否给出了您要查找的结果
mzsu5hc02#
使用带指示器的外部
merge
并删除公共行:或者,如果两个输入中没有重复项:
输出:
ykejflvf3#