如何在数据框合并期间识别内部联接中的内容

时间:2016-11-10 01:24:00

标签: pandas dataframe

我有一个看起来像这样的框架(df):

                                 2000q1         2000q2         2000q3  
State        RegionName                                                  
New York     New York                NaN            NaN            NaN   
California   Los Angeles   207066.666667  214466.666667  220966.666667   
Illinois     Chicago       138400.000000  143633.333333  147866.666667

(注意State,RegionName这里是MultiIndex)

和一个看起来像这样(ut)的框架:

     State    RegionName
0  Alabama        Auburn
1  Alabama      Florence
2  Alabama  Jacksonville
3  Alabama    Livingston
4  Alabama    Montevallo

因此,为了获得State,RegionName在两个数据帧中的所有行,我这样做:

dfut = pd.merge(df, ut, how='inner', left_index=True, right_on=['State', 'RegionName'])

有效。我现在想要一个行列表,其中来自df帧的行不在ut帧中 - 就像“NOT inner join”。我很确定我需要做一个LEFT连接,这将给我整个df,但我不知道如何从中减去相交的行。希望清楚。谢谢

1 个答案:

答案 0 :(得分:7)

indicator=Truemerge

中添加参数query('_merge != "both"')
dfut = pd.merge(df, ut, how='outer',
                left_index=True, right_on=['State', 'RegionName'],
                indicator=True)

dfut.query('_merge != "both"')

enter image description here