【发布时间】:2019-09-07 02:37:32
【问题描述】:
我在 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_正确
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。 我不确定这里的术语,所以我认为合并是我想要的,但我不确定我的数据发生了什么。
【问题讨论】:
-
这意味着两个数据帧的 date_zip 值不匹配。检查 DF_Left.dtypes、DF_Right.dtypes 和两者的 date_zip 中的唯一值
-
您的代码对我来说很好用。可能需要检查您的 df_left 和 df_right 的类型是否相同。它们都是字符串吗?
-
尝试
DF_Left['date_zip'] = DF_Left['date_zip'].str.strip(),然后对DF_Right执行完全相同的操作,然后尝试合并。 -
是的,有一个明显的不匹配——我之前没有检查过,每个 DF 中的日期格式不同。 mm-dd-yyyy 与 mm/dd/yyyy 在另一个。现在可以使用了!