gpt4 book ai didi

pandas - 导出到 csv 时的 timedelta 格式松散 - 有解决方案吗?

转载 作者:行者123 更新时间:2023-12-04 23:39:03 26 4
gpt4 key购买 nike

我有一个带有日期时间对象(包括 timedelta)的 Pandas Dataframe。当我创建 DF 时一切正常,但是当我将它导出到 csv 然后再次导入时,日期时间对象是字符串。

我尝试使用

pd.read_csv('xyz.csv',parse_dates=True)

导入时以及
df.to_csv('xyz.csv',date_format='%Y-%m-%d %H:%M:%S')

导出时。但它不起作用。

语境:
我创建了一个生成数据的程序,将它放入一个 Pandas DF 中,这些 DF 必须被存储,直到下次打开该程序为止。

所以我的问题是:是否有可能使用 CSV.format 来做到这一点?一般来说,导出 Pandas DF 以尽可能多地保留其属性的最佳格式是什么?
谢谢!

编辑:

数据样本:
这是 DF 中的一行(索引是日期时间对象)。列是“任务”(字符串格式)和“持续时间”(时间增量对象)。

2017-04-18 08:11:39|PyMC3_Book|0 天 00:24:49.919194

最佳答案

不是这样 read_csv s parse_dates参数工作

From the Docs :

  • 解析日期 : bool 值或整数或名称列表或列表或字典列表,默认为 False
  • bool 值。如果为 True -> 尝试解析索引。
  • 整数或名称列表。例如如果 [1, 2, 3] -> 尝试将第 1、2、3 列解析为单独的日期列。
  • 列表列表。例如如果 [[1, 3]] -> 合并第 1 列和第 3 列并解析为
    单个日期列。
  • 字典,例如{‘foo’ : [1, 3]} -> 将第 1、3 列解析为日期并调用结果‘foo’
  • 注意:iso8601 格式的日期存在快速路径。


  • 所以它告诉我们 parse_dates=True仅尝试解析索引。否则,您需要传递一个列位置列表,指示需要解析为日期的列。

    您可能想使用 converters显式处理这些列的字典
    考虑以下 df
    df = pd.DataFrame(dict(
    A=pd.to_datetime(['2017-01-01']),
    B=pd.to_timedelta([37], unit='s')
    ))

    将其写入文件
    df.to_csv('test.csv', index=None)

    定义 converters字典
    converters = dict(A=pd.to_datetime, B=pd.to_timedelta)
    # in your case
    # converters = dict(Duration=pd.to_timedelta)

    读取csv
    df = pd.read_csv('test.csv', converters=converters)

    df

    A B
    0 2017-01-01 00:00:37

    df.dtypes

    A datetime64[ns]
    B timedelta64[ns]
    dtype: object

    关于pandas - 导出到 csv 时的 timedelta 格式松散 - 有解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487841/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com