При сравнении столбцов Pandas из CSV пустые столбцы возвращаются как не равные - PullRequest
0 голосов
/ 14 октября 2019

У меня есть два CSV-файла, каждый из которых содержит два идентификатора, и я пытаюсь найти несоответствия в данных.

Пока мой процесс таков:
- считывание Csv-файлов в кадр данных
- Объединить файлы с известным «хорошим» идентификатором
- Проверить наличие неравных значений в известном «проблемном» идентификаторе

Однако «проблемный» идентификатор должен быть числом, поскольку он был введен вручнуюлюди, это не всегда так - поэтому я воспринимаю оба как строку для сравнения.

Вот что у меня есть:

#Read the CRM files with the identifiers as strings (by not doing this one file reads as a string the other reads as a float by default)
NEW_CRM = pd.read_csv('C:\\myfilenew.csv', header=0, dtype={'CRM ID':str})
OLD_CRM = pd.read_csv('C:\\myfileold.csv', header=0, dtype={'NEW CRM ID':str})

Query1 = pd.merge(NEW_CRM, OLD_CRM, on='Known_Good_ID', how='left')

FinalTest = Query1.loc[Query1['CRM ID'.strip()] != Query1['NEW CRM ID'.strip()]]

Проблема в том, что даже с полосой () пустое значение в идентификаторе CRM по сравнению с пустым значением в новом идентификаторе CRM возвращается как не равное. Я не уверен, как лучше поступить, так как варианты включают в себя попытку преобразовать все в числовое значение, заполнение пустых строк и т. Д. Я думаю, что должен быть более элегантный способ справиться с этим.

Добавление (пример данных по запросу):

NEW_CRM:
Known_Good_Id, NEW CRM ID
100, 1005
101, 2003
102, abcd
103, 
104, 4008

OLD_CRM:
Known_Good_Id, CRM ID
100, 1005
101, 2003
102, 9878
103, 
104, 4002
107, 5005

Query1:
Known_Good_ID, NEW CRM ID, CRM ID
100, 1005, 1005
101, 2003, 2003
102, abcd, 9879
103,,
104, 4008, 4002

FinalTest Expected Result:
102, abcd, 9879
104, 4008, 4002

FinalTest Actual Result:
102, abcd, 9879
103,,
104, 4008, 4002

* Я не хочу возвращать запись 103 из-за пустых строк

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