【发布时间】:2016-04-27 22:30:37
【问题描述】:
我有两个数据框正在尝试使用 pandas 进行合并。
lu_3
Site SurveyDate TripDate
003L 1990-09-28 1990-06-10
065r 2008-04-03 2008-03-28
data
Site SurveyDate
003L 1990-09-28
065r 2008-04-03
我正在尝试合并 lu_3 以使用 TripDate 填充 data。 data 已被子集化以便于阅读,但包含的列比显示的要多。两个数据框都使用Site 作为索引。
我试过了:
tmp = data.merge(lu_3,left_index=True,right_index=True,how='left', on=['SurveyDate'])
但这会返回旅行日期的NaT。
检查数据类型产生:
lu_3.dtypes
Out[111]:
SurveyDate datetime64[ns]
TripDate datetime64[ns]
dtype: object
data.dtypes
Out[114]:
SurveyDate datetime64[ns]
编辑
我已重置 data 和 lu_3 上的索引并尝试使用以下方式合并:
tmp = tmp_data.merge(lu_3,on=['Site','SurveyDate'], how='left').set_index('Site')
但我仍然在tmp 上为TripDate 收到NaT。
【问题讨论】:
-
检查两个数据框中
SurveyDate的日期类型以确保它们是一致的,例如。Type(data.SurveryDate) -
他们都是
pandas.core.series.Series -
对不起,
Type(data.SurveryDate.iat[0])将获取系列中第一个元素的类型。 -
两者都返回
pandas.tslib.Timestamp -
它对我有用。您使用的是哪个版本的熊猫? 0.18.0 是最新的。
标签: python pandas dataframe merge