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

Jay*_*s01 6 datetime export pandas

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

我尝试使用

pd.read_csv('xyz.csv',parse_dates=True)
Run Code Online (Sandbox Code Playgroud)

导入时以及

df.to_csv('xyz.csv',date_format='%Y-%m-%d %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

导出时。但它不起作用。

上下文:我创建了一个生成数据的程序,将其放入一个 Pandas DF 中,并且这些 DF 必须存储到下次打开该程序为止。

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

编辑:

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

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

jez*_*ael 3

我认为你可以使用to_pickle然后read_pickle-文档

df.to_pickle('xyz.pkl')

df = pd.read_pickle('xyz.pkl')
Run Code Online (Sandbox Code Playgroud)

但如果需要timedelta

import pandas as pd
import numpy as np
from pandas.compat import StringIO

temp=u"""Tasks|Duration
2017-04-18 08:11:39|PyMC3_Book|0 days 00:24:49.919194"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep="|", index_col=None, parse_dates=False)

print (df)
                          Tasks                Duration
2017-04-18 08:11:39  PyMC3_Book  0 days 00:24:49.919194

df.to_csv('xyz.csv')

df = pd.read_csv('xyz.csv', index_col=0, parse_dates=True)
df['Duration'] = pd.to_timedelta(df['Duration'])
print (df)
                          Tasks        Duration
2017-04-18 08:11:39  PyMC3_Book 00:24:49.919194

print (df.dtypes)
Tasks                object
Duration    timedelta64[ns]
dtype: object

print (df.index)

DatetimeIndex(['2017-04-18 08:11:39'], dtype='datetime64[ns]', freq=None)
Run Code Online (Sandbox Code Playgroud)