繁体   English   中英

在Pandas中合并两个DataFrame会在新合并的DF中产生NaN

[英]Merging two DataFrames in Pandas results in NaNs in the new merged DF

我在Pandas中有两个DataFrame我希望连接在一起(我认为合并),当我这样做时,结果DataFrame在新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')

我得到了我想要的东西,除了所有的天气列现在都是NaNs。 我不确定这里的术语,所以我认为合并是我想要的,但我不确定我的数据发生了什么。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM