Python 用不同的时间匹配两个相似的日期

Python 用不同的时间匹配两个相似的日期,python,python-2.7,date,pandas,Python,Python 2.7,Date,Pandas,我从CSV文件中读取熊猫数据帧中的两个日期(df1.a_date和df2.a_date)。它们在日期级别(YYYY-MM-DD)匹配,但在时间级别(HH:MM:SS)不匹配。两者都作为dtype:object读入 我需要合并日期上的两个数据帧,但由于它们不精确,我可能需要首先转换它们。有什么想法吗 编辑: 我曾尝试使用硅藻土.date从pandas.datetime构建一个新的日期,但这似乎不起作用 datetime.date(df.a_date.year, df.a_date.month, d

我从CSV文件中读取熊猫数据帧中的两个日期(df1.a_date和df2.a_date)。它们在日期级别(YYYY-MM-DD)匹配,但在时间级别(HH:MM:SS)不匹配。两者都作为dtype:object读入

我需要合并日期上的两个数据帧,但由于它们不精确,我可能需要首先转换它们。有什么想法吗

编辑:

我曾尝试使用硅藻土.date从pandas.datetime构建一个新的日期,但这似乎不起作用

datetime.date(df.a_date.year, df.a_date.month, df.a_date.day)

pandas datetime对象没有年、月、日访问器。

将datetime格式化为仅包含YYYY-MM-DD:

假设df是您的数据帧:

'{:%Y-%m-%d}'.format(d)

假设dft是您的数据帧,“索引”列包含日期时间:

In [1804]: dft.head()
Out[1804]: 
                index         A
0 2013-01-01 00:00:00  1.193366
1 2013-01-01 00:01:00  1.013425
2 2013-01-01 00:02:00  1.281902
3 2013-01-01 00:03:00 -0.043788
4 2013-01-01 00:04:00 -1.610164
如果需要,可以将该列转换为只包含日期,并将其保存在其他列中。并对其进行操作:

In [1805]: dft['index'].apply(lambda v:v.date()).head()
Out[1805]: 
0    2013-01-01
1    2013-01-01
2    2013-01-01
3    2013-01-01
4    2013-01-01
Name: index, dtype: object

可以规范化日期列/日期时间索引:

注意:目前normalize没有导出到dt访问器,因此我们需要用DatetimeIndex包装


如果它也是DatetimeIndex,则可以使用
df.index
而不是
df[col\u name]

将datetime列转换为日期。将其保存在另一列中,然后在这些列上合并。这基本上就是我一直试图弄清楚的,但我似乎无法确定确切的代码。你(或其他人)能举个例子吗?请先把你试过的东西拿出来。谢谢这就成功了。现在我只需要处理缺少的值。@NicholasTulach这将比使用dt.date或dt.normalize慢得多(normalize是最快的)。
In [11]: df = pd.DataFrame(pd.date_range('2015-01-01 05:00', periods=3), columns=['datetime'])

In [12]: df
Out[12]:
             datetime
0 2015-01-01 05:00:00
1 2015-01-02 05:00:00
2 2015-01-03 05:00:00

In [13]: df["date"] = pd.DatetimeIndex(df["datetime"]).normalize()

In [14]: df
Out[14]:
             datetime       date
0 2015-01-01 05:00:00 2015-01-01
1 2015-01-02 05:00:00 2015-01-02
2 2015-01-03 05:00:00 2015-01-03