Один из методов заключается в том, чтобы сохранить результат внутренней формы слияния как dfs, тогда мы можем просто выбрать строки, когда значения одного столбца не входят в это общее:
In [119]:
common = df1.merge(df2,on=['col1','col2'])
print(common)
df1[(~df1.col1.isin(common.col1))&(~df1.col2.isin(common.col2))]
col1 col2
0 1 10
1 2 11
2 3 12
Out[119]:
col1 col2
3 4 13
4 5 14
EDIT
Другой метод, который вы нашли, - это использовать isin
, который приведет к появлению NaN
строк, которые вы можете удалить:
In [138]:
df1[~df1.isin(df2)].dropna()
Out[138]:
col1 col2
3 4 13
4 5 14
Однако, если df2 не запускает строки таким же образом то это не сработает:
df2 = pd.DataFrame(data = {'col1' : [2, 3,4], 'col2' : [11, 12,13]})
будет генерировать весь df:
In [140]:
df1[~df1.isin(df2)].dropna()
Out[140]:
col1 col2
0 1 10
1 2 11
2 3 12
3 4 13
4 5 14
Я не пользователь Windows, но я попытаюсь дать вам несколько советов.
(1) - проверьте, соответствует ли ваша конфигурация rabbitmq вашей строке подключения (в частности, в linux я могу настроить только rabbitmq слушать на конкретном интерфейсе, чтобы он не принимал соединения, скажем, через интерфейс обратной связи); Вариант конфигурации, который я бы проверил, - NODE_IP_ADDRESS
(2) - если вы на 100% уверены, что ваш rabbitmq работает, я бы проверил, соответствует ли NODENAME
вашей фактической конфигурации системы (т. Е. Проверьте хост правильность имени)
(3) - самая очевидная, но по-прежнему стоит проверить, является ли ваш пользователь rabbitmq правильным (я вижу, что у вас есть guest
пользователь, вы сами создали этого пользователя? к вашему конкретному vhost?)
(4) - и это приводит к еще одному очевидному вопросу, если ваша строка подключения верна. Моя строка подключения выглядит примерно так: BROKER_URL = 'amqp://my_user:very_secret_password@localhost:5672/my_vhost_name
(и в этом случае из вашего журнала кажется, что вы не настроили строку подключения для использования vhost)