Слияние панд не работает, хотя типы данных ключей одинаковы - PullRequest
0 голосов
/ 18 апреля 2019

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

Я опубликую здесь фрагмент кода, хотя у меня нет минимального набора данных для его воспроизведения, данные слишком велики,Существуют наборы данных df и q0, оба имеют столбцы permno date, и я хочу объединить их на основе.

# just to make sure the data types are the same
df['permno'] = df['permno'].astype(int)
q0['permno'] = q0['permno'].astype(int)

df['date'] = df['date'].dt.to_period('D')
q0['date'] = q0['date'].dt.to_period('D')

print(df.dtypes, q0.dtypes)

Outpit for q0:

date      period[D]
permno        int64
sum         float64
dtype: object

Вывод для df:

permno         int64
date       period[D]
sic            int64
prc          float64
...

Еще один шаг, который необходимо выполнить, - это пересечение значений столбца:

print(len(set(df.date.unique())&set(q0.date.unique())))
print(len(set(df.permno.unique())&set(q0.permno.unique())))

Выход:

9154
5925

Слияние:

df = pd.merge(df, q0, on=['permno', 'date'], how='inner')
print(len(df))

Выход:

0

Я пробовал это много раз, но не могу понять, почему он не работает сейчас.

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