我有df(.xlsx格式),日期列为UTC格式
date
2018-07-31 00:00
2018-07-31 00:10
2018-07-31 00:20
2018-07-31 00:30
2018-07-31 00:40
我想转换为如下所示的IST(+5:30)格式
date
2018-07-31 05:30
2018-07-31 05:40
2018-07-31 05:50
2018-07-31 06:00
2018-07-31 06:10
many solutions available on stack overflow but its does not match with my criteria.
答案 0 :(得分:4)
这是使用datetime.timedelta
的一种方法。
例如:
import datetime
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M") + datetime.timedelta(hours=5, minutes=30) )
输出:
2018-07-31 05:30:00
2018-07-31 05:40:00
2018-07-31 05:50:00
2018-07-31 06:00:00
2018-07-31 06:10:00
使用pytz
模块。
例如:
import datetime
from pytz import timezone, utc
tz = timezone('Asia/Kolkata')
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M").replace(tzinfo=utc).astimezone(tz) )
输出:
2018-07-31 05:30:00+05:30
2018-07-31 05:40:00+05:30
2018-07-31 05:50:00+05:30
2018-07-31 06:00:00+05:30
2018-07-31 06:10:00+05:30
熊猫DF
import pandas as pd
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
df = pd.DataFrame({"Date": data})
df["Date_IST"] = pd.to_datetime(df["Date"]) + pd.DateOffset(hours=5, minutes=30)
print(df)
输出:
Date Date_IST
0 2018-07-31 00:00 2018-07-31 05:30:00
1 2018-07-31 00:10 2018-07-31 05:40:00
2 2018-07-31 00:20 2018-07-31 05:50:00
3 2018-07-31 00:30 2018-07-31 06:00:00
4 2018-07-31 00:40 2018-07-31 06:10:00