我们可以从 csv 文件自动检测给定列的日期时间格式吗?

问题描述 投票:0回答:2

假设我有一个

csv
timestamp
但格式未定义。它可以是带有任何分隔符的任何格式,例如 -

mm/dd/yyyy hh:mm
dd/mm/yyyy hh:mm:ss
mm-dd-yyyy hh:mm
dd-mm-yyyy hh:mm:ss
或只是这样。

我正在尝试解析任何格式的日期。

这里:

dateparse = lambda dates: datetime.strptime(dates, '%m/%d/%Y %H:%M')

我们定义了解析这种格式的日期:

%m/%d/%Y %H:%M

如果有人可以提出任何宝贵的建议,那将会很有帮助。

python csv pandas datetime timestamp
2个回答
1
投票

pandas.read_csv
有一个
infer_datetime_format
参数:

infer_datetime_format :布尔值,默认 False

如果启用 True 和 parse_dates,pandas 将尝试推断列中日期时间字符串的格式,如果可以推断,则切换到更快的解析方法。在某些情况下,这可以将解析速度提高约 5-10 倍。


0
投票

DuckDB 是一个 SQL OLAP DBMS,其中包括一个非常强大的 CSV 解析器,可以自动检测文件格式、标题、列类型等 https://duckdb.org/2023/10/27/csv-sniffer.html

它还包括一个 PythonAPI 可以直接使用 DuckDB 或通过 Conda

您只需加载库并将 CSV 包含在内存表中

import duckdb
duckdb.sql("CREATE TABLE temptable AS SELECT * from read_csv_auto('myfile.csv'")

以便您稍后可以对表进行任何查询

duckdb.sql("SUMMARIZE SELECT * from temptable")
© www.soinside.com 2019 - 2024. All rights reserved.