用python中的panda转换Dataframe中的时区



这可能是一个很容易回答的问题,但不知怎么的,我没有得到答案。问题是,我有三个测量点的数据。其中两人正在使用数据类型:datetime64[ns,UTC]但最后一个使用的是dtype:datetime64[ns]。

我找到了很多答案,但到目前为止没有任何答案对我有效,但也许这只是我不知道如何与熊猫合作的问题。因此,对于熊猫,我想将数据与时间戳合并。但熊猫不让我,因为时间戳不同,下面的信息是:

ValueError: You are trying to merge on datetime64[ns, UTC] and datetime64[ns] columns. If you wish to proceed you should use pd.concat

我必须键入什么才能正确转换我的值?我试过很多类似的东西:

pd.to_datetime(df.time, unit='ns').dt.tz_localize('UTC')

pd.to_datetime(df, unit='ns').dt.tz_localize('UTC').dt.tz_convert('US/Eastern')

但到目前为止,我什么都没用。。。我非常感谢你的帮助。

您也可以从pytz使用all_timezones

import pandas as pd
from pytz import all_timezones
print(all_timezones[-5:])

你可以看到最后5:

['UTC', 'Universal', 'W-SU', 'WET', 'Zulu']

我将创建一个示例数据帧:

date = pd.Series(pd.date_range('9/1/2020', periods=10, freq='D'))

结果

0   2020-09-01
1   2020-09-02
2   2020-09-03
3   2020-09-04
4   2020-09-05
5   2020-09-06
6   2020-09-07
7   2020-09-08
8   2020-09-09
9   2020-09-10
dtype: datetime64[ns]

您可以更改它,例如

date_with_utc = date.dt.tz_localize('Europe/London')
print(date_with_utc)

结果

0   2020-09-01 00:00:00+01:00
1   2020-09-02 00:00:00+01:00
2   2020-09-03 00:00:00+01:00
3   2020-09-04 00:00:00+01:00
4   2020-09-05 00:00:00+01:00
5   2020-09-06 00:00:00+01:00
6   2020-09-07 00:00:00+01:00
7   2020-09-08 00:00:00+01:00
8   2020-09-09 00:00:00+01:00
9   2020-09-10 00:00:00+01:00
dtype: datetime64[ns, Europe/London]

所有代码

import pandas as pd
from pytz import all_timezones
date = pd.Series(pd.date_range('9/1/2020', periods=10, freq='D'))
date_with_utc = date.dt.tz_localize('Europe/London')
print(date_with_utc)

您可以尝试使用此转换要合并的两列,然后尝试合并吗?

df1['time'] = pd.to_datetime(df1['time'], utc = True)
df2['time'] = pd.to_datetime(df2['time'], utc = True)

最新更新