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
我认为你可以使用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)
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |