【问题标题】:How to automatically parsing date time in CSV with pandas如何使用 pandas 自动解析 CSV 中的日期时间
【发布时间】:2021-09-03 16:07:13
【问题描述】:

我的 csv 文件有一列,其中包含如下所示的日期时间:

“2021-01-24 20:10:58”

我写了以下内容:

import pandas as pd

data = pd.read_csv(r'C:\Users\user\Desktop\foo\data.csv', index_col=1, parse_dates=True, infer_datetime_format=True)    
print(data.dtypes)

基本上我所有的列都显示为“对象”类型。有人可以帮助我了解我缺少什么吗?

【问题讨论】:

    标签: python pandas csv datetime


    【解决方案1】:

    您应该传递一个列名或索引列表,例如parse_dates=["col1", "col2"]parse_dates=[1, 2]。如果传递parse_dates=True,则只会解析索引列。

    根据docs

    行为如下:

    布尔值。如果为 True -> 尝试解析索引。

    int 或名称列表。例如如果 [1, 2, 3] -> 尝试将第 1、2、3 列分别解析为单独的日期列。

    列表列表。例如如果 [[1, 3]] -> 合并第 1 列和第 3 列并解析为单个日期列。

    dict,例如{‘foo’ : [1, 3]} -> 将第 1、3 列解析为日期并调用结果‘foo’

    【讨论】:

    • 好的,这似乎只有在我删除 index_col=1 时才能解决问题。知道为什么会这样吗?感谢您并为没有提前阅读文档表示歉意。
    • 事实上调用 setIndex 做同样的事情。我想知道将列设置为索引是否会将其从 dtypes 中删除?
    • @AmirAfghani bcz 它充当数据帧的索引,因此当您编写 df.dtypes 时,dtypes 属性会返回一个包含每列数据类型的系列,因此 dtypes 不会对索引起作用
    • 正确,将列设置为索引会将其从df.dtypes 中删除。索引的处理方式与列不同。您可以使用 df.index.dtype 访问索引的 dtype。
    猜你喜欢
    • 2016-12-15
    • 2021-02-07
    • 2015-09-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2017-02-18
    相关资源
    最近更新 更多