Слияние двух DataFrames в Pandas приводит к появлению NaN в новом объединенном DF - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть два DataFrames в Пандах, которые я хочу объединить (я думаю, объединить), и когда я это сделаю, результирующий DataFrame будет иметь все NaN для правой части нового DataFrame.Вот упрощенная схема:

DF_Left

     station_name     trips    date_zip
0    Mountain View     100   95113 2013-08-29
1    San Francisco     190   95113 2012-04-12
2    San Jose          109   94107 2013-09-01

DF_Right

      max_temperature     wind_speed   date_zip
0      79                   2       95113 2013-08-29
1      67                   3       95113 2012-04-12
2      64                   1       94107 2013-09-01

Слева около 40 тыс. Строк, а справа 1500.Что я хочу сделать, это объединить их так, чтобы DF_Right был добавлен в DF_Left на основе столбца date_zip.Поэтому я действительно хочу

DF_Correct

     station_name     trips    date_zip         max_temperature   wind_speed
0    Mountain View     100   95113 2013-08-29   79                     2                          
1    San Francisco     190   95113 2012-04-12   67                     3                     
2    San Jose          109   94107 2013-09-01   64                     1

Когда я делаю

DF_Correct = pd.merge(DF_Left, DF_Right,   left_on=['date_zip'], right_on = ['date_zip' ], how='left')

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

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

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

DF_Correct = pd.merge(DF_Right, DF_Left ,  how='left', on='date_zip')
0 голосов
/ 17 апреля 2019

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

import pandas as pd
df1 = pd.DataFrame({'station_name': ['Mountain View','San Francisco','San Jose','San Jose'],
                   'trips': [100,190,109,110],
                   'date_zip': ['95113 2013-08-29','95113 2012-04-12','94107 2013-09-01','94107 2013-09-02']})
df2 = pd.DataFrame({'wind_speed': [2,3,1],
                   'max_temperature': [79,67,64],
                   'date_zip': ['95113 2013-08-29','95113 2012-04-12','94107 2013-09-01']})

DF_Correct = pd.merge(df1, df2, on='date_zip', how='left')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...