【发布时间】:2016-11-14 17:28:11
【问题描述】:
我有两个数据框,我必须在 Date 上合并它们。 但数据类型不一样。它们是日期和 str 格式。
print(visit_data.iloc[0]['visit_date'])
2016-05-22
type(visit_data.iloc[0]['visit_date'])
Out[40]: datetime.date
print(holiday_data.iloc[0]['visit_date'])
1/1/2016
type(holiday_data.iloc[0]['visit_date'])
Out[46]: str
所以这是类型和格式。现在我正在使用它来合并。
data_store = pd.merge(data_store, holiday_data, how = 'left' , on = ['visit_date','State']).reset_index(drop=True)
合并正在进行,因为有 2 个键,但数据没有输出,这可能是由于 visit_date 的格式不同。 所以,我试图通过这个来改变它。
holiday_data['visit_date'] = pd.to_datetime(holiday_data['visit_date'], format = 'format="%m/%d/%Y')
但这给了
print(holiday_data.iloc[0]['visit_date'])
2016-01-01 00:00:00
type(holiday_data.iloc[0]['visit_date'])
Out[54]: pandas.tslib.Timestamp
这不是我想要的。
我正在更改holiday_data 的数据类型,因为data_store 的长度很长。那么有什么帮助可以解决这个问题吗?我正在使用python2.7
【问题讨论】:
-
不应该是
%d/%m/%Y吗? -
@NickilMaveli
format = '%Y-%m-%d'是我想要的格式,因为visit_data['visit_date']的格式是 So。 -
format参数是为了帮助to_datetime确定参数,它的显示方式是完全独立的操作,因为您可以使用dt.strftime,但这会返回一个字符串而不是日期时间跨度> -
@EdChum 我误解了功能,我现在已经编辑了问题,请看一下。
-
为什么显示的格式在这里很重要?您希望将数据保留为算术运算的日期时间 dtype,如果您想要不同的格式,则可以调用
dt.strftime('"%m/%d/%Y')以添加所需格式的新字符串列
标签: python python-2.7 pandas merge