簡體   English   中英

熊貓按分鍾比較知道時區的日期時間字段

[英]pandas compare timezone aware datetime field by minutes

我有一個這樣的datetime對象:

df.iloc[:10]
0   2019-03-05 00:45:36.503277422+08:00
1   2019-03-05 00:46:36.404034571+08:00
2   2019-03-05 00:47:36.434888822+08:00
3   2019-03-05 00:48:36.535496247+08:00
4   2019-03-05 00:49:36.512082457+08:00
5   2019-03-05 00:50:36.515718466+08:00
6   2019-03-05 00:51:36.520325894+08:00
7   2019-03-05 00:52:36.523945647+08:00
8   2019-03-05 00:53:36.548567617+08:00
9   2019-03-05 00:54:36.740268213+08:00
Name: Date-Time, dtype: datetime64[ns, Asia/Shanghai]

如果其時間晚於08:00:00 Asia/Shanghai時間08:00:00 Asia/Shanghai這意味着晚UTC時間00:00:00我將檢索所有行。 我有兩個問題:

  1. 如何以當地時間(上海)而不是UTC時間寫條件。 只有df[df>'2019-03-05 00:00:00']返回True 如果我使用df[df>'2019-03-05 08:00:00']全部為False

  2. 如何僅使用時間,而不必在時間前加日期。 我不想寫df[df>'2019-03-05 00:00:00'] ,而是只想寫df[df>'00:00:00']時間。

非常感謝!

您可以將時區信息添加到標量日期時間並進行比較:

date = pd.to_datetime('2015-02-24').tz_localize('UTC').tz_convert('Asia/Shanghai')
print (date)
2015-02-24 08:00:00+08:00

要么:

date = pd.Timestamp('2015-02-24 08:00:00+08:00')

print (df[df > date])
0   2019-03-05 00:45:36.503277422+08:00
1   2019-03-05 00:46:36.404034571+08:00
2   2019-03-05 00:47:36.434888822+08:00
3   2019-03-05 00:48:36.535496247+08:00
4   2019-03-05 00:49:36.512082457+08:00
5   2019-03-05 00:50:36.515718466+08:00
6   2019-03-05 00:51:36.520325894+08:00
7   2019-03-05 00:52:36.523945647+08:00
8   2019-03-05 00:53:36.548567617+08:00
9   2019-03-05 00:54:36.740268213+08:00
Name: Date-Time, dtype: datetime64[ns, Asia/Shanghai]

然后按時間比較:

from datetime import time
print (df[df.dt.time > time(0,0,0)])
0   2019-03-05 00:45:36.503277422+08:00
1   2019-03-05 00:46:36.404034571+08:00
2   2019-03-05 00:47:36.434888822+08:00
3   2019-03-05 00:48:36.535496247+08:00
4   2019-03-05 00:49:36.512082457+08:00
5   2019-03-05 00:50:36.515718466+08:00
6   2019-03-05 00:51:36.520325894+08:00
7   2019-03-05 00:52:36.523945647+08:00
8   2019-03-05 00:53:36.548567617+08:00
9   2019-03-05 00:54:36.740268213+08:00
Name: Date-Time, dtype: datetime64[ns, Asia/Shanghai]

或按時間增量:

print (df[pd.to_timedelta(df.dt.strftime('%H:%M:%S')) > '00:00:00'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM