【发布时间】:2020-06-15 19:37:30
【问题描述】:
我目前正在从数据库(使用 PgAdmin)下载 CSV,并使用 Python 脚本重新格式化和过滤行以导入其他地方。但是,我遇到了一个非常奇怪的错误。
如果我尝试使用从数据库下载的 CSV 运行脚本,它会将其中一列中的所有日期转换为空白 (NaN)。但是,如果我事先在 Excel 中打开同一个文档,并将“另存为”到另一个 CSV 文件中,我的脚本会将所有日期正确地转换为所需的格式 (dd/mm/yyyy)。
这是一个最小的复制案例:
import pandas as pd
file_path = r'C:\Users\MiguelTavares\Desktop\from_database.csv'
data = pd.read_csv(file_path)
data['start_date'] = pd.to_datetime(data['start_date'], errors='coerce', format='%d/%m/%Y')
print(data)
CSV 看起来像这样:
column1 column2 start_date
test1 test2 26/06/2019
test11 test22 25/07/2019
我相信这一切都会发生,因为我通过了errors='coerce'。但是我需要传递它,因为如果我没有得到 ValueError,我需要将此信息放入日期时间,以便稍后使用它进行计算。
ValueError: time data '2019-06-26' does not match format '%d/%m/%Y' (match)
CSV 文件的格式 (.csv) 和编码 (UTF-8) 与数据库中的文件、我“另存为”的文件以及其中的内容相同。那么,为什么我的脚本与我“另存为”的副本完美配合,而不是数据库中的那个?
提前致谢!
【问题讨论】:
-
你的数据格式不应该是“%Y%d/%m”吗?
-
但我稍后需要在 '%d/%m/%Y' 中使用它,这与其中一个 CSV 文件完美配合...
-
根据错误,您的日期已经采用正确的日期时间格式,
'2019-06-26'或包含不同格式的行。dd/mm/yyyy不是正确的日期时间格式,它是一个字符串。 -
嗯,但是如果我不将其转换为日期时间格式,我稍后会在代码中收到以下错误:TypeError: '
标签: python pandas csv datetime pgadmin