Ошибка выдачи pd.merge при выполнении через файл .bat - PullRequest
0 голосов
/ 12 июня 2019

Скрипт Python не запускается при выполнении в файле bat, но без проблем работает в редакторе.

Ошибка связана с различием типов данных в скрипте pd.merge. Хотя тип данных, заданный для обоих столбцов, одинаков в обоих кадрах данных.

df2a["supply"] = df2a["supply"].astype(str)
df2["supply_typ"] = df2["supply_typ"].astype(str)
df2a["supply_typ"] = df2a["supply_typ"].astype(str)
df = (pd.merge(df2,df2a, how=join,on= 
['entity_id','pare','grome','buame','tame','prd','gsn',                                                    
'supply','supply_typ'],suffixes=['gs2','gs2x']))

При запуске файла bat я получаю следующую ошибку в pd.merge:

Вы пытаетесь объединить столбцы float64 и object. Если вы хотите продолжить, вы должны использовать pd.concat

1 Ответ

0 голосов
/ 12 июня 2019

Не прямой ответ, но содержит код, который не может быть отформатирован в комментарии и должен быть достаточным для решения проблемы.

Когда pandas сообщает, что , вы пытаетесь объединить float64 и objectстолбцы , это конечно правильно.Это может быть неочевидно, потому что pandas полагается на numpy, и что столбец numpy object может хранить любые данные.

Я закончил с простой функцией для диагностики всех этих проблем с типом данных:

def show_types(df):
    for i,c in enumerate(df.columns):
        print(df[c].dtype, type(df.iat[0, i]))

Показывает как тип данных pandas столбцов информационного кадра, так и фактический тип первого элемента столбца.Это может помочь увидеть разницу между столбцами, содержащими элементы str, и другими, содержащими элементы datatime.datatime, в то время как тип данных просто objects.

Используйте это на обоих ваших фреймах данных, и проблема должна статьочевидно ...

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