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。
添加回答
舉報