合并 Pandas 中的两个数据帧会在新合并的 DF 中生成 NaN



我在Pandas中有两个数据帧,我想连接在一起(我认为合并(,当我这样做时,生成的DataFrame具有新数据帧右侧的所有NaN。这是一个简化的原理图:

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

左侧大约有 40K 行,右侧有 1500 行。我想做的是合并两者,以便根据date_zip列将DF_Right添加到DF_Left中。所以我真正想要的是

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。我不确定这里的术语,所以我认为合并是我想要的,但我不确定我的数据发生了什么。

请检查数据以确保数据/类型正确。在下面找到代码,尝试使用您的示例。测试运行良好

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')

到目前为止,我从这个问题中了解到,下面的代码应该给出所需的答案。

DF_Correct = pd.merge(DF_Right, DF_Left ,  how='left', on='date_zip')

最新更新