Как сделать исключение левого внешнего соединения в пандах - PullRequest
0 голосов
/ 26 мая 2018

У меня есть два кадра данных, A и B, и я хочу получить их в A, но не в B, как в правом нижнем левом углу.

The one below the top left

Кадр данных A имеет столбцы ['a','b' + others], а B имеет столбцы ['a','b' + others].Там нет значений NaN.Я попробовал следующее:

1.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) | (~dfA['b'].isin(dfm['b'])

2.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) & (~dfA['b'].isin(dfm['b'])

3.

dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])

4.

dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])

но когда я получаю len(dfm) и len(dfe), они не суммируются до dfA (это несколько цифр).Я пытался сделать это на фиктивных делах, и # 1 работает, поэтому, возможно, мой набор данных может иметь некоторые особенности, которые я не могу воспроизвести.

Какой правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Проверить эту ссылку

df=pd.merge(dfA, dfB, on=['a','b'], how="outer", indicator=True)
df=df[df['_merge'] =='left_only']

Один вкладыш:

df = pd.merge(dfA, dfB, on=['a','b'], how="outer", indicator=True
              ).query('_merge=="left_only"')
0 голосов
/ 26 мая 2018

Я думаю, что это будет что-то вроде примеров в: Pandas left external объединяют несколько фреймов данных в нескольких столбцах

dfe = pd.merge(dFA, dFB, how='left', on=['a','b'], indicator=True)
dfe[dfe[_merge] == 'left_only']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...