oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列
我想把pandas python中本地化的datetime列截短/四舍五入到一小時。例如,如果我有2017-10-15 15:03:25+02:00,我希望獲得2017-10-15 15 15:00:00+02:00。注意,我想保留時區信息。
我試過的第一件事是:DF['dtColumn'].dt.floor('H')
這種方法可以將時區信息截短到小時并保留時區信息,但問題是在夏時制到來時出現的,例如在2017年10月29日。給出以下代碼:
^{pr2}$
它會產生給定的錯誤:
^{3}$
這個錯誤建議使用“歧義”參數,在出現歧義的情況下,有一個預定義的決定要做。但在我的數據幀中,我不會說有這樣一個模糊性,因為我有時區信息,我仍然想要它在四舍五入后。我寧愿避免模棱兩可。在
我也找到了解決辦法:df.loc[:, 1].values.astype('
除復雜時區外,此方法通常有效。例如,尼泊爾的時區(亞洲/加德滿都)是GMT+5:45。同樣,我想做的是將本地時區中的datetimes截短到小時,在嘗試了上面的代碼之后,我觀察到它將轉換為utc,然后進行截斷,因此當它返回到本地化的datetime時,我沒有將其分組到精確的小時數中,而是將其分組到每個小時:45。在
對于代碼: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')
我們得到以下結果: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]
這證明了我問題的答案不是將日期時間轉換為“utc”或時間戳,而是構造它們并將它們轉換回本地化的。在
python的本地庫有一個replace方法,可以替換0的分鐘和秒信息,但我在pandas中沒有找到類似的datetime列。我想找到一個不同的解決方案來逐行迭代,因為我的數據幀相當大。
對于如何根據這個限制將pandas中的datetime列截短到小時有什么想法嗎?在
總結
以上是生活随笔為你收集整理的oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle method_opt,统计
- 下一篇: php 7.1 openssl安装,介绍