首页 > 解决方案 > 我已经将 pandas 的对象列转换为日期时间,但是在我用 to_csv 保存并重新加载它之后,列数据类型变回对象

问题描述

这是我的df:

ids = [1, 2, 3, 4]
start_time = ["2020-04-26 17:45:14", "2020-04-17 17:08:54",
              "2020-04-01 17:54:13", "2020-04-07 12:50:19"]
df = pd.DataFrame({"id": ids, "started_at": start_time})

首先,我将 started_at 列从字符串转换为日期时间,如下所示:

df['started_at'] = pd.to_datetime(df['started_at'], format="%Y-%m-%d %H:%M:%S")

然后,我使用 to_csv 保存了它。但是当我重新导入 df 时,“started_at”列的数据类型变回了对象。有没有什么办法解决这一问题?

标签: pythonpandas

解决方案


是的,csv 不存储日期时间,因为它是 Python 中的一种数据类型。当您再次读取文件时,pandas 会看到非数字值并显示“哦,这是一个字符串”。

解决这个问题的方法不是尝试将某些内容作为 pandas 日期时间存储在 CSV 文件中,而是让 pandas 在读取文件时解析日期。

df = pd.read_csv(file_name, parse_dates=["started_at"])


推荐阅读