中的Python datetime损坏Pandas.con

2024-04-25 11:51:53 发布

您现在位置:Python中文网/ 问答频道 /正文

调用时熊猫海螺在包含datetime对象的数据帧上,由于与另一行上的datetime进行“某些”交互,有时其中一个对象会提前一小时。你知道吗

from dateutil import parser
import pytz
import pandas as pd
from datetime import datetime

助手函数。。。你知道吗

def to_ldn(dt):
    assumed_timezone = pytz.timezone('Europe/London')
    local_dt = assumed_timezone.normalize(assumed_timezone.localize(parser.parse(dt)))
    return local_dt.astimezone(assumed_timezone)

包含一行的数据帧,只有在连接多个数据帧时才会显示效果。你知道吗

df1 = pd.DataFrame({'DateTime':pd.Series([to_ldn('2016-01-06 14:48:03')]), 'Id':pd.Series(['ID1'])})

包含两行的数据帧。请注意,第一个日期时间在欧洲/伦敦时区的GMT+1日期范围内。你知道吗

df2 = pd.DataFrame({'DateTime':pd.Series([to_ldn('2016-06-06 14:48:03'),
                                      to_ldn('2016-01-06 14:48:03')]), 
                'Id':pd.Series(['ID2','ID3'])})

现在看着他们。。。你知道吗

print pd.concat([df1, df2], axis=0)
  • 日期时间Id
  • 2016年1月6日14:48:03+00:00 ID1
  • 2016年6月6日14:48:03+01:00 ID2
  • 2016年1月6日15:48:03+00:00ID3

请注意,final datetime(对应于ID3)向前跳了一个小时。如果ID2对应的时间戳日期不在欧洲/伦敦时区对应GMT+1的时段内,则不会发生这种情况。你知道吗

这发生在Python2.7.12(Anaconda4.2.0)和Python3.5.2(Anaconda4.2.0)中


Tags: to数据对象importiddatetime时间dt