3 回答
TA贡献1880条经验 获得超4个赞
我认为您无法以比拟议的方式更有效的方式实现所需的目标。
潜在的问题是时间戳(如您所知)由两部分组成。表示UTC时间和时区tz_info的数据。当在屏幕上打印时区时,时区信息仅用于显示目的。在显示时,数据会适当偏移,并将+01:00(或类似值)添加到字符串中。剥离tz_info值(使用tz_convert(tz = None))实际上并不会改变表示时间戳幼稚部分的数据。
因此,执行所需操作的唯一方法是修改基础数据(熊猫不允许这样做……DatetimeIndex是不可变的–请参见DatetimeIndex的帮助),或创建一组新的时间戳对象并包装它们在新的DatetimeIndex中。您的解决方案将执行以下操作:
pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
作为参考,以下是replace方法Timestamp(请参阅tslib.pyx):
def replace(self, **kwds):
return Timestamp(datetime.replace(self, **kwds),
offset=self.offset)
您可以参考文档上的内容datetime.datetime,它datetime.datetime.replace还会创建一个新对象。
如果可以的话,提高效率的最佳选择是修改数据源,以使它(错误地)报告没有时区的时间戳。您提到:
我想使用时区朴素的时间序列(以避免额外的时区麻烦,在我正在处理的情况下,我不需要它们)
我很好奇您指的是什么额外的麻烦。作为所有软件开发的一般规则,我建议您将时间戳记“天真值”保持在UTC中。没有什么比查看两个不同的int64值(它们属于哪个时区)更糟糕的了。如果您始终始终使用UTC作为内部存储,那么将避免无数的麻烦。我的口头禅是时区仅是人类的I / O。
添加回答
举报