Tyl*_*son 4 python timezone datetime pandas
我正在尝试将 df 中的列转换为时间序列。数据集从 2015 年 3 月 23 日到 2019 年 8 月 17 日,数据集如下所示:
time 1day_active_users
0 2015-03-23 00:00:00-04:00 19687.0
1 2015-03-24 00:00:00-04:00 19437.0
Run Code Online (Sandbox Code Playgroud)
我正在尝试将时间列转换为日期时间系列,但它将该列作为对象返回。这是代码:
data = pd.read_csv(data_path)
data.set_index('time', inplace=True)
data.index= pd.to_datetime(data.index)
data.index.dtype
Run Code Online (Sandbox Code Playgroud)
data.index.dtype 返回 dtype('O')。我认为这就是为什么当我尝试及时索引元素时,它会返回错误。例如,当我运行这个时:
data.loc['2015']
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误
KeyError: '2015'
Run Code Online (Sandbox Code Playgroud)
任何帮助或反馈将不胜感激。谢谢你。
正如评论的那样,问题可能是由于时区不同造成的。尝试传递utc=True
给pd.to_datetime
:
df['time'] = pd.to_datetime(df['time'],utc=True)
df['time']
Run Code Online (Sandbox Code Playgroud)
测试数据
time 1day_active_users
0 2015-03-23 00:00:00-04:00 19687.0
1 2015-03-24 00:00:00-05:00 19437.0
Run Code Online (Sandbox Code Playgroud)
输出:
0 2015-03-23 04:00:00+00:00
1 2015-03-24 05:00:00+00:00
Name: time, dtype: datetime64[ns, UTC]
Run Code Online (Sandbox Code Playgroud)
进而:
df.set_index('time', inplace=True)
df.loc['2015']
Run Code Online (Sandbox Code Playgroud)
给
1day_active_users
time
2015-03-23 04:00:00+00:00 19687.0
2015-03-24 05:00:00+00:00 19437.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
999 次 |
最近记录: |