oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列
我想把pandas python中本地化的datetime列截短/四舍五入到一小時(shí)。例如,如果我有2017-10-15 15:03:25+02:00,我希望獲得2017-10-15 15 15:00:00+02:00。注意,我想保留時(shí)區(qū)信息。
我試過的第一件事是:DF['dtColumn'].dt.floor('H')
這種方法可以將時(shí)區(qū)信息截短到小時(shí)并保留時(shí)區(qū)信息,但問題是在夏時(shí)制到來時(shí)出現(xiàn)的,例如在2017年10月29日。給出以下代碼:
^{pr2}$
它會(huì)產(chǎn)生給定的錯(cuò)誤:
^{3}$
這個(gè)錯(cuò)誤建議使用“歧義”參數(shù),在出現(xiàn)歧義的情況下,有一個(gè)預(yù)定義的決定要做。但在我的數(shù)據(jù)幀中,我不會(huì)說有這樣一個(gè)模糊性,因?yàn)槲矣袝r(shí)區(qū)信息,我仍然想要它在四舍五入后。我寧愿避免模棱兩可。在
我也找到了解決辦法:df.loc[:, 1].values.astype('
除復(fù)雜時(shí)區(qū)外,此方法通常有效。例如,尼泊爾的時(shí)區(qū)(亞洲/加德滿都)是GMT+5:45。同樣,我想做的是將本地時(shí)區(qū)中的datetimes截短到小時(shí),在嘗試了上面的代碼之后,我觀察到它將轉(zhuǎn)換為utc,然后進(jìn)行截?cái)?#xff0c;因此當(dāng)它返回到本地化的datetime時(shí),我沒有將其分組到精確的小時(shí)數(shù)中,而是將其分組到每個(gè)小時(shí):45。在
對(duì)于代碼:dt1 = datetime.datetime(2017, 10, 29, 0, 1)
dt2 = datetime.datetime(2017, 10, 29, 1, 1)
df = pd.DataFrame([('whatever', dt1), ('whatever', dt2)])
df[1] = df[1].dt.tz_localize('Asia/Katmandu')
df[2] = df.loc[:, 1].values.astype('
df[2].dt.tz_localize('UTC').dt.tz_convert('Asia/Katmandu')
我們得到以下結(jié)果:0 2017-10-28 23:45:00+05:45
1 2017-10-29 00:45:00+05:45
Name: 2, dtype: datetime64[ns, Asia/Katmandu]
這證明了我問題的答案不是將日期時(shí)間轉(zhuǎn)換為“utc”或時(shí)間戳,而是構(gòu)造它們并將它們轉(zhuǎn)換回本地化的。在
python的本地庫有一個(gè)replace方法,可以替換0的分鐘和秒信息,但我在pandas中沒有找到類似的datetime列。我想找到一個(gè)不同的解決方案來逐行迭代,因?yàn)槲业臄?shù)據(jù)幀相當(dāng)大。
對(duì)于如何根據(jù)這個(gè)限制將pandas中的datetime列截短到小時(shí)有什么想法嗎?在
總結(jié)
以上是生活随笔為你收集整理的oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle method_opt,统计
- 下一篇: oracle 00851,Oracle调