3 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為您無(wú)法以比擬議的方式更有效的方式實(shí)現(xiàn)所需的目標(biāo)。
潛在的問(wèn)題是時(shí)間戳(如您所知)由兩部分組成。表示UTC時(shí)間和時(shí)區(qū)tz_info的數(shù)據(jù)。當(dāng)在屏幕上打印時(shí)區(qū)時(shí),時(shí)區(qū)信息僅用于顯示目的。在顯示時(shí),數(shù)據(jù)會(huì)適當(dāng)偏移,并將+01:00(或類似值)添加到字符串中。剝離tz_info值(使用tz_convert(tz = None))實(shí)際上并不會(huì)改變表示時(shí)間戳幼稚部分的數(shù)據(jù)。
因此,執(zhí)行所需操作的唯一方法是修改基礎(chǔ)數(shù)據(jù)(熊貓不允許這樣做……DatetimeIndex是不可變的–請(qǐng)參見(jiàn)DatetimeIndex的幫助),或創(chuàng)建一組新的時(shí)間戳對(duì)象并包裝它們?cè)谛碌腄atetimeIndex中。您的解決方案將執(zhí)行以下操作:
pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
作為參考,以下是replace方法Timestamp(請(qǐng)參閱tslib.pyx):
def replace(self, **kwds):
return Timestamp(datetime.replace(self, **kwds),
offset=self.offset)
您可以參考文檔上的內(nèi)容datetime.datetime,它datetime.datetime.replace還會(huì)創(chuàng)建一個(gè)新對(duì)象。
如果可以的話,提高效率的最佳選擇是修改數(shù)據(jù)源,以使它(錯(cuò)誤地)報(bào)告沒(méi)有時(shí)區(qū)的時(shí)間戳。您提到:
我想使用時(shí)區(qū)樸素的時(shí)間序列(以避免額外的時(shí)區(qū)麻煩,在我正在處理的情況下,我不需要它們)
我很好奇您指的是什么額外的麻煩。作為所有軟件開(kāi)發(fā)的一般規(guī)則,我建議您將時(shí)間戳記“天真值”保持在UTC中。沒(méi)有什么比查看兩個(gè)不同的int64值(它們屬于哪個(gè)時(shí)區(qū))更糟糕的了。如果您始終始終使用UTC作為內(nèi)部存儲(chǔ),那么將避免無(wú)數(shù)的麻煩。我的口頭禪是時(shí)區(qū)僅是人類的I / O。
添加回答
舉報(bào)