将日期时间字段转换为另一个时区,并在Python中添加新的colunm
请演示如何将日期时间转换为另一个时区,并在Python中添加新的colunm 我不太确定原始数据的确切时区(可能是AEST),但我需要一个比原始数据(应该是加利福尼亚时间)长-17小时的新coulmn 就像这张照片:将日期时间字段转换为另一个时区,并在Python中添加新的colunm,python,dataframe,timezone,Python,Dataframe,Timezone,请演示如何将日期时间转换为另一个时区,并在Python中添加新的colunm 我不太确定原始数据的确切时区(可能是AEST),但我需要一个比原始数据(应该是加利福尼亚时间)长-17小时的新coulmn 就像这张照片: 谢谢大家! 假设您有这样一个数据帧: time 0 1597101380360 1 1597099168350 2 1597095668690 3 1597085316180 4 1597054931440 time
谢谢大家! 假设您有这样一个数据帧:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
你肯定知道时区是“澳大利亚/昆士兰”
首先,让我们将时间转换为可读的格式,并将其保存在名为“日期时间”的新列中:
df['date\u time']=pd.to\u datetime(pd.to\u datetime,df.time,unit='ms',origin='unix'
).apply(lambda x:x.strftime(“%Y-%m-%d%H:%m:%S”))
现在,数据帧如下所示:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
现在,在我们更改时区之前,我们需要将日期时间与创建时间戳的原始时区相关联,为此我们使用函数。然后,我们创建一个名为cali_time的新列,应用该函数将datetime与新时区一起保存:
#将时区分配到日期\时间
df['date\u time']=df.date\u time.dt.tz\u本地化('澳大利亚/昆士兰')
#创建时区设置为US/Pacific的新列
df['cali_time']=df.date_time.dt.tz_convert('US/Pacific'))
df.head()
现在,数据帧如下所示:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
假设您有这样一个数据帧:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
你肯定知道时区是“澳大利亚/昆士兰”
首先,让我们将时间转换为可读的格式,并将其保存在名为“日期时间”的新列中:
df['date\u time']=pd.to\u datetime(pd.to\u datetime,df.time,unit='ms',origin='unix'
).apply(lambda x:x.strftime(“%Y-%m-%d%H:%m:%S”))
现在,数据帧如下所示:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
现在,在我们更改时区之前,我们需要将日期时间与创建时间戳的原始时区相关联,为此我们使用函数。然后,我们创建一个名为cali_time的新列,应用该函数将datetime与新时区一起保存:
#将时区分配到日期\时间
df['date\u time']=df.date\u time.dt.tz\u本地化('澳大利亚/昆士兰')
#创建时区设置为US/Pacific的新列
df['cali_time']=df.date_time.dt.tz_convert('US/Pacific'))
df.head()
现在,数据帧如下所示:
time
0 1597101380360
1 1597099168350
2 1597095668690
3 1597085316180
4 1597054931440
time date_time
0 1597101380360 2020-08-10 23:16:20
1 1597099168350 2020-08-10 22:39:28
2 1597095668690 2020-08-10 21:41:08
3 1597085316180 2020-08-10 18:48:36
4 1597054931440 2020-08-10 10:22:11
time date_time cali_time
0 1597101380360 2020-08-10 23:16:20+10:00 2020-08-10 06:16:20-07:00
1 1597099168350 2020-08-10 22:39:28+10:00 2020-08-10 05:39:28-07:00
2 1597095668690 2020-08-10 21:41:08+10:00 2020-08-10 04:41:08-07:00
3 1597085316180 2020-08-10 18:48:36+10:00 2020-08-10 01:48:36-07:00
4 1597054931440 2020-08-10 10:22:11+10:00 2020-08-09 17:22:11-07:00
数据图像对于帮助您的人来说不是最佳选择。也请阅读图片的数据是不是最佳的人来帮助你。也请阅读,谢谢,@Mel,非常详细!但是当我尝试第一个代码:df['date\u time']=pd.to\u datetime(pd.to\u datetime(df.time,unit='ms',origin='unix').apply(lambda x:x.strftime(“%Y-%m-%d%H:%m:%S”))时,时间被转换为1970-01-19,而它应该是2020-8-xx(时间:1598128447)您能告诉我如何解决这个问题吗?您能提供数据帧的示例吗?不需要导入
lambda
s和pytz
导入。您可以直接调用列上的strftime,并使用dt.tz\u convert
@Elena\u转换到另一个时区。请这样尝试:df['date\u time']=pd.to\u datetime(pd.to\u datetime(df.time,unit='s')。apply(lambda x:x.strftime(%Y-%m%d%H:%m:%s)))谢谢,@Mel,这非常详细!但是当我尝试第一个代码:df['date\u time']=pd.to\u datetime(pd.to\u datetime(df.time,unit='ms',origin='unix').apply(lambda x:x.strftime(“%Y-%m-%d%H:%m:%S”))时,时间被转换为1970-01-19,而它应该是2020-8-xx(时间:1598128447)您能告诉我如何解决这个问题吗?您能提供数据帧的示例吗?不需要导入lambda
s和pytz
导入。您可以直接调用列上的strftime,并使用dt.tz\u convert
@Elena\u转换到另一个时区。可以这样尝试:df['date\u time']=pd.to\u datetime(pd.to\u datetime(df.time,unit='s')。apply(lambda x:x.strftime(%Y-%m%d%H:%m:%s)))