第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將可識(shí)別熊貓時(shí)區(qū)的DateTimeIndex轉(zhuǎn)換為樸素的時(shí)間戳,但在特定時(shí)區(qū)

將可識(shí)別熊貓時(shí)區(qū)的DateTimeIndex轉(zhuǎn)換為樸素的時(shí)間戳,但在特定時(shí)區(qū)

慕慕森 2019-10-10 17:00:33
您可以使用該函數(shù)tz_localize來(lái)識(shí)別Timestamp或DateTimeIndex時(shí)區(qū),但如何相反:如何在保留時(shí)區(qū)的情況下將時(shí)區(qū)識(shí)別的Timestamp轉(zhuǎn)換為樸素的時(shí)間戳?一個(gè)例子:In [82]: t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")In [83]: tOut[83]: <class 'pandas.tseries.index.DatetimeIndex'>[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]Length: 10, Freq: S, Timezone: Europe/Brussels我可以通過(guò)將其設(shè)置為None來(lái)刪除時(shí)區(qū),但是結(jié)果將轉(zhuǎn)換為UTC(12點(diǎn)變成10):In [86]: t.tz = NoneIn [87]: tOut[87]: <class 'pandas.tseries.index.DatetimeIndex'>[2013-05-18 10:00:00, ..., 2013-05-18 10:00:09]Length: 10, Freq: S, Timezone: None還有另一種方法可以將DateTimeIndex轉(zhuǎn)換為樸素的時(shí)區(qū),但同時(shí)保留設(shè)置時(shí)區(qū)的時(shí)區(qū)嗎?關(guān)于我問(wèn)這個(gè)原因的一些背景信息:我想使用時(shí)區(qū)樸素的時(shí)間序列(以避免時(shí)區(qū)的額外麻煩,在我正在研究的情況下不需要它們)。但是由于某些原因,我必須處理本地時(shí)區(qū)(歐洲/布魯塞爾)中的時(shí)區(qū)感知時(shí)間序列。由于我所有其他數(shù)據(jù)都是時(shí)區(qū)純樸的(但以我的本地時(shí)區(qū)表示),因此我想將此時(shí)間序列轉(zhuǎn)換為樸素才能進(jìn)一步使用,但它也必須以我的本地時(shí)區(qū)表示(因此,只需刪除時(shí)區(qū)信息,而不將用戶可見(jiàn)的時(shí)間轉(zhuǎn)換為UTC)。我知道時(shí)間實(shí)際上是內(nèi)部存儲(chǔ)為UTC,并且僅在您表示它時(shí)才轉(zhuǎn)換為另一個(gè)時(shí)區(qū),所以當(dāng)我要“非本地化”時(shí)間時(shí),必須進(jìn)行某種轉(zhuǎn)換。例如,使用python datetime模塊,您可以像這樣“刪除”時(shí)區(qū):In [119]: d = pd.Timestamp("2013-05-18 12:00:00", tz="Europe/Brussels")In [120]: dOut[120]: <Timestamp: 2013-05-18 12:00:00+0200 CEST, tz=Europe/Brussels>In [121]: d.replace(tzinfo=None)Out[121]: <Timestamp: 2013-05-18 12:00:00> 因此,基于此,我可以執(zhí)行以下操作,但是我想當(dāng)使用較大的時(shí)間序列時(shí),這將不是很有效:In [124]: tOut[124]: <class 'pandas.tseries.index.DatetimeIndex'>[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]Length: 10, Freq: S, Timezone: Europe/BrusselsIn [125]: pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])Out[125]: <class 'pandas.tseries.index.DatetimeIndex'>[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]Length: 10, Freq: None, Timezone: None
查看完整描述

3 回答

?
慕村225694

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。


查看完整回答
反對(duì) 回復(fù) 2019-10-10
  • 3 回答
  • 0 關(guān)注
  • 606 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)