【发布时间】:2023-03-03 15:38:01
【问题描述】:
如何将带时区的时间戳转换为正常的“日期时间”类型?
当我打印我的 df 的 df.dtypes 时,我得到“对象”作为该列的类型而不是“日期时间”
我有数据框:
| Resource | timestamp |
| -------- | -------------- |
| 112 | 2011-10-01 00:38:44.546000+02:00|
| 113 | 2011-10-02 00:38:44.546000+02:00|
| 112 | 2011-10-03 00:38:44.546000+02:00|
| 115 | 2011-10-04 00:38:44.546000+02:00|
| 114 | 2011-10-05 00:38:44.546000+02:00|
我用过
df_log['time:timestamp'] = df_log['time:timestamp'].apply(lambda x: dt.strftime(dt.fromisoformat(str(x)),'%Y-%m-%d.%H:%M:%S'))
它删除了“+”号并给了我日期和时间部分,但我觉得我做错了,因为我对日期时间处理没有很好的了解! 我的目标是获得像“2011-10-01 00:38:44”这样的日期和时间,并且类型是“datetime”而不是我仍然得到的对象!
【问题讨论】:
-
我没有得到对象。我在做
df['timestamp'] = pd.to_datetime(df['timestamp'])后得到datetime64[ns, pytz.FixedOffset(120)]的dtype -
pd.to_datetime(df['timestamp'].astype(str).str[:19])怎么样 -
@Ferris 谢谢,你的代码比我的更短更干净,尽管两者给出了相同的结果。我的问题是,如果我知道这是我正在尝试学习和理解的日期时间转换过程,我是否做错了:(
-
@DavidErickson 我的表已从日志文件 (xes) 转换为 pandas df - 如果它最初是 df 那么你是对的,它会产生日期时间类型