Тип столбца DataFrame не переключается на строку - PullRequest
0 голосов
/ 18 октября 2018

При объединении двух фреймов данных следующей командой:

df = pd.merge(df,LFA1, left_on='Vendor', right_index=True, how='left')

... и получено печально известное сообщение: «Вы пытаетесь объединить столбцы объекта и int64».Похоже, что наиболее вероятной причиной является то, что левая или правая клавиша имеет тип int.

Я нашел два метода, чтобы принудительно заставить типы клавиш str: a.при создании DataFrame:

LFA1= pd.read_excel(r'G:\FAIA 2018\Extracts\LFA1(Full).xlsx',converters={'Vendor':str})

b.после создания DataFrame:

LFA1['Vendor']=LFA1['Vendor'].astype(str)

Даже если я запрашиваю тип сразу после команды:

df.types()
LFA1.types()

столбец «Поставщик» остается «объектом», но никогда не отображается'str'.

Я полагаю, что это основная причина сообщения, но ни один из этих методов не преуспел в переключении типа на строку.

Я неправильно понял или пропустил шаг ...

1 Ответ

0 голосов
/ 18 октября 2018

pandas сохраняет строки в полях object, так что это не проблема.Проблема в том, что при слиянии вы указываете left_on='Vendor', right_index=True, что означает, что слияние пытается сопоставить df['Vendor'] с LFA1.index (что, скорее всего, является только номерами строк).

То, что вы хотите, это либо left_on='Vendor', right_on='Vendor', либо просто короче on='Vendor', поскольку похоже, что поле названо одинаково в обоих кадрах.

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