Python панды получают строки из левой таблицы и из правой таблицы, отсутствующие в левой таблице - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть левая и правая таблица, и мне нужно объединить значения FileStamp из обоих значений следующим образом: взять все значения из левой таблицы и из правой таблицы, отсутствующие в левой таблице, объединить ее по дате:

import pandas as pd
left = pd.DataFrame({'FileStamp': ['T101', 'T102', 'T103', 'T104'], 'date': [20180101, 20180102, 20180103, 20180104]})
right = pd.DataFrame({'FileStamp': ['T501', 'T502'], 'date': [20180104, 20180105]})

Что-то вроде

result = pd.merge(left, right, how='outer', on='date')

но «внешнее» не очень хорошая идея.

Желаемый вывод должен выглядеть как

     FileStamp_x      date      FileStamp_y
0        T101       20180101         NaN
1        T102       20180102         NaN
2        T103       20180103         NaN
3        T104       20180104         NaN
4         NaN       20180105        T502

Есть ли простой способ добиться желаемого результата?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете настроить значения после merge:

result = pd.merge(left, right, how='outer', on='date')
result['FileStamp_y'] = np.where(result['FileStamp_x'].isnull(), result['FileStamp_y'], np.nan)

Результат:

    FileStamp_x     date  FileStamp_y
0          T101 20180101          NaN
1          T102 20180102          NaN
2          T103 20180103          NaN
3          T104 20180104          NaN
4           NaN 20180105         T502
0 голосов
/ 05 сентября 2018

Использовать фильтрацию по isin до merge:

r = right[~right['date'].isin(left['date'])]
print (r)
  FileStamp      date
1      T502  20180105

result = pd.merge(left, r, how='outer', on='date')
print (result)
  FileStamp_x      date FileStamp_y
0        T101  20180101         NaN
1        T102  20180102         NaN
2        T103  20180103         NaN
3        T104  20180104         NaN
4         NaN  20180105        T502
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...