Как использовать DataFrame.isin без ограничения совпадения индекса и значения? - PullRequest
0 голосов
/ 16 октября 2019

Итак, у меня есть два файла, один из которых содержит 6 миллионов записей, а другой - около 5 миллионов записей. Я хочу сравнить конкретные значения столбца в обоих кадрах данных. Это код, который я использовал:

print(df1['Col1'].isin(df2['col3']).value_counts())

Это важно для меня, так как я хочу видеть количество Истинных (одинаковых) и Ложных (разных). Я получаю большинство записей около 95% как истинные, однако некоторые 5% данных поступают как ложные. Я извлек эти данные с помощью to_csv и сравнил столбцы с помощью vimdiff, и все они идентичны, тогда почему код помечает их как ложные (разные)? Есть ли лучший и более надежный метод?

Примечание. Я также проверил наличие пробелов в столбцах. Пробелов нет.

PS. В документации Pandas.isin указано, что индекс и значение должны совпадать. Поскольку у меня есть больше записей в 1 файле, поэтому индекс не соответствует этим записям, как удалить это ограничение?

1 Ответ

0 голосов
/ 16 октября 2019

Сначала преобразуйте столбец, который вы используете в качестве параметра внутри вашего метода isin(), в список.

Затем проанализируйте его как копию вашего df1 кадра данных, потому что вам нужно получить значения значений в том же столбце, который вы отфильтровали.

Из вашего примера:

print(df1[df1['Col1'].isin(df2['col3'].values.tolist())]['Col1'].value_counts())

Попробуйте запустить это снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...