Другой набор результатов по какой-то причине при использовании df merging - PullRequest
0 голосов
/ 15 февраля 2019

Я довольно новичок в Python и очень плохо знаком с Pandas, и я пытаюсь анализировать данные в двух файлах CSV.Я беру подмножество записей в File1 и ищу те, которых нет в File2.Я читаю файлы во фрейм данных, создавая другой фрейм данных, который урезан до двух или трех ключевых столбцов, которые мне нужны, и использую объединение для сравнения результатов.

Файлы идентичны по структуре и заголовкам.Всего около 40 или 50 столбцов.Составной ключ, который меня волнует, - это сочетание «IDnum» и «Status», и все, что находится за его пределами, является просто контекстом, поэтому я соединил файлы в этих столбцах.

Что странно, так это то, что я получаюневерные результаты, когда я читаю весь файл, но если я вручную удаляю все ненужные столбцы, я получаю правильный результат.Я не уверен, почему это даже фактор, потому что я не изменяю строки и не меняю объединение атрибутов.

File1= pd.read_csv('PersonList1.csv', encoding='ANSI', index_col=False)  # Read Source file into data frame
File2 = pd.read_csv('PersonList2.csv', encoding='ANSI', index_col=False)  # Read Target CSV file in data frame

# Reduce number of columns
keep_col = ['ID_num', 'Status']
File1_keep_col = File1[keep_col]

# Filter down to the subset I want in File 1
File1ActivesBoolean = File1_keep_col['Status'] == 'A'  # Returns boolean results
File1Actives = File1_keep_col[File1ActivesBoolean] 

# Execute merge of File1  subset and get results
CompareJoin = pd.merge(File1Actives, File2,
                                         on=['ID_num', 'Status'],
                                         how='left',
                                         indicator=True)
CompareBoolean = CompareJoin['_merge'] == 'left_only'
CompareResult = CompareJoin[CompareBoolean]

Когда я беру полный файл, я неправильно получаю 61926 записейв File1, которых нет в File2.Когда я удаляю все столбцы из файла 2, оставляя только столбцы «ID_num» и «Status», я получаю 627 (что правильно).Я знаю, что цифры не имеют большого значения без просмотра данных, но это на несколько порядков меньше, поэтому я уверен, что в этом объединении что-то не учтено, но не могу понять, что именно.Был бы очень признателен за любую помощь от профессионалов там.

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