这可能是一个很容易回答的问题,但不知怎么的,我没有得到答案。问题是,我有三个测量点的数据。其中两人正在使用数据类型: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)