将datetime64 [ns,UTC]熊猫列转换为datetime

时间:2020-07-15 15:01:28

标签: python pandas datetime

我有一个带有时间戳的数据框,其数据类型为object。

0    2020-07-09T04:23:50.267Z
1    2020-07-09T11:21:55.536Z
2    2020-07-09T11:23:18.015Z
3    2020-07-09T04:03:28.581Z
4    2020-07-09T04:03:33.874Z
Name: timestamp, dtype: object

我不知道上述数据框中的日期时间格式。我将 pd.to_datetime 应用于上述列,其中数据类型已更改为 datetime64 [ns,UTC]

df['timestamp'] = pd.to_datetime(df.timestamp)

现在数据框以这种方式显示,

0   2020-07-09 04:23:50.267000+00:00
1   2020-07-09 11:21:55.536000+00:00
2   2020-07-09 11:23:18.015000+00:00
3   2020-07-09 04:03:28.581000+00:00
4   2020-07-09 04:03:33.874000+00:00
Name: timestamp, dtype: datetime64[ns, UTC]

我要将上面的datetime64 [ns,UTC]格式转换为正常的日期时间。

For example,
2020-07-09 04:23:50.267000+00:00  to 2020-07-09 04:23:50

有人能解释这个 2020-07-09T04:23:50.267Z 的含义是什么,以及如何将其转换为日期时间对象吗?

2 个答案:

答案 0 :(得分:2)

要删除时区,请使用tz_localize

df['timestamp'] = pd.to_datetime(df.timestamp).dt.tz_localize(None)

输出:

                timestamp
0 2020-07-09 04:23:50.267
1 2020-07-09 11:21:55.536
2 2020-07-09 11:23:18.015
3 2020-07-09 04:03:28.581
4 2020-07-09 04:03:33.874

答案 1 :(得分:0)

to_datetime 的返回取决于 [令我困惑] 输入的类型:

list-like: DatetimeIndex
Series: Series of datetime64 dtype
scalar: Timestamp

所以以下失败

df["Time"] = pd.to_datetime(df["StringArray"])
xm = df["Time"] < pd.to_datetime("12/29/2020  9:09:37 PM")

但以下效果很好

df["Time"] = pd.to_datetime(df["StringArray"])
xm = df["Time"] < pd.to_datetime("12/29/2020  9:09:37 PM", utc=True)

这可以帮助您避免时区问题。问候,