【问题标题】:How to use pandas read csv如何使用 pandas 读取 csv
【发布时间】:2022-11-01 18:43:42
【问题描述】:

我有一个数据框,其中所有列名都是日期。当我使用.read_csv() 时,pandas 将这些列名读取为字符串。有没有办法指定我希望列名是日期时间对象。

理想情况下,我需要将此作为.read_csv() 调用的一部分来完成,而不是之后的附加行。

例如,csv 文件看起来像

df = pd.DataFrame({'2022-10-25': [0, 1, 1], '2022-10-26': [1, 1, 0]})

当我调用.read_csv() 时,我希望列标题是日期时间对象,而不是字符串。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您将整个列定义为日期时间或整数......您无法将标题定义为日期时间并将值定义为不同的东西。

    另一方面,您不能将列定义为日期时间,因为这些值只是整数......我认为您以错误的方式处理您的问题。

    【讨论】:

    • 是的,您当然可以将列定义为整数,实际上它们是整数。但是为什么要将整数列定义为日期时间呢?我就是不明白
    • 但是,只需通过将日期替换为日期并将 dtype datetime 分配给列来使事情变得简单,也许可以使用 strftime() 定义格式。否则该方法将没有意义。
    【解决方案2】:

    创建虚拟数据集:

    df = pd.DataFrame({'2022-10-25': [0, 1, 1], '2022-10-26': [1, 1, 0]})
    

    检查初始列索引:

    df.columns
    

    输出:

    您可以在.read_csv() 之后运行以下代码

    from datetime import datetime
    datetime_columns = [datetime.strptime(col, '%Y-%m-%d') for col in df.columns]
    df.columns = pd.Index(datetime_columns, dtype='datetime64[ns]')
    

    最后我们检查新索引:

    df.columns
    

    输出:

    【讨论】:

    • 你在read_csv() 中提到它是“理想的”,你没有提到你根本知道怎么做。你不能在 `read_csv()' 中做到这一点。
    • @user112495 是唯一的方法。我的回答是否涵盖了您的问题?
    • @ user112495 下次请更具体,因为我花时间在你的问题上,最后问题改变了。如果你没有“理想”,我会回答完全不同的。
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 2019-08-09
    • 2014-11-15
    • 2021-09-24
    相关资源
    最近更新 更多