Панды - Сравнение двух Csv Dataframes, но один CSV имеет проблемы - PullRequest
0 голосов
/ 30 августа 2018

У меня есть два csv-фрейма данных, и я пытаюсь найти уникальные идентификаторы входа, которые не содержатся в двух фреймах. Проблема, с которой я сталкиваюсь, заключается в том, что следующий код выполняется, но df3 возвращает все строки и столбцы из df1. Я подозреваю, что есть проблема с одной из строк в df1, но здесь мне нужна ваша помощь, чтобы выяснить, что может быть причиной этого.

Есть около 24000 строк в df1 и около 8500 в df2. Когда я получаю df3, он возвращает все 24000 строк из df1, что, как я знаю, неверно, поскольку между ними есть общие логины. Обратите внимание, что имена входа в df2 находятся под столбцом «Номер пользователя». Мой код ниже:

import pandas as pd
import numpy as np
import csv

fileLocationDf1 = "corpscore.csv"
fileLocationDf2 = "ENFI.csv"

createDf1 = pd.read_csv(fileLocationDf1)
createDf2 = pd.read_csv(fileLocationDf2, low_memory = False)

df3 = createDf1[~createDf1['login'].isin(createDf2['User Number'])]

df3.to_excel('Results.xlsx', sheet_name = 'Results')

1 Ответ

0 голосов
/ 30 августа 2018

Проверьте ваши данные. Возможно, ваши типы данных разные.

См. Пример:

df1 = pd.DataFrame({'A': [1,2,3]})

df2 = pd.DataFrame({'A': ['2','5','6']})

df1[~df1['A'].isin(df2['A'])]
#   A
#0  1
#2  3

А вот этот:

df2 = pd.DataFrame({'A': ['2','5a','6a'],
                    'B': list('def'),
                    'C': [1.7,0.3,2.8]})
df1[~df1['A'].isin(df2['A'])]
#   A
#0  1
#1  2
#2  3

Здесь происходит то, что .isin() пытается преобразовать целую серию в .isin() в ту же dtype, что и та, для которой вы ее вызываете - и затем делает сравнение.

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