假设我有一个
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
如果有人可以提出任何宝贵的建议,那将会很有帮助。
pandas.read_csv
有一个 infer_datetime_format
参数:
infer_datetime_format :布尔值,默认 False
如果启用 True 和 parse_dates,pandas 将尝试推断列中日期时间字符串的格式,如果可以推断,则切换到更快的解析方法。在某些情况下,这可以将解析速度提高约 5-10 倍。
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")