Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将日期时间字段转换为另一个时区,并在Python中添加新的colunm_Python_Dataframe_Timezone - Fatal编程技术网

将日期时间字段转换为另一个时区,并在Python中添加新的colunm

将日期时间字段转换为另一个时区,并在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

请演示如何将日期时间转换为另一个时区,并在Python中添加新的colunm

我不太确定原始数据的确切时区(可能是AEST),但我需要一个比原始数据(应该是加利福尼亚时间)长-17小时的新coulmn

就像这张照片:


谢谢大家!

假设您有这样一个数据帧:

    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)))