2015-02-25 6 views
4

Я пытаюсь создать Pandas DataFrame, где date_range - это индекс. Затем сохраните его в CSV-файле, чтобы даты были записаны в формате ISO-8601.pandas сохранить дату в формате ISO?

import pandas as pd 
import numpy as np 
from pandas import DataFrame, Series 

NumberOfSamples = 10 
dates = pd.date_range('20130101',periods=NumberOfSamples,freq='90S') 
df3 = DataFrame(index=dates) 
df3.to_csv('dates.txt', header=False) 

токовый выход к dates.txt является:

2013-01-01 00:00:00 
2013-01-01 00:01:30 
2013-01-01 00:03:00 
2013-01-01 00:04:30 
................... 

Я пытаюсь заставить его выглядеть следующим образом:

2013-01-01T00:00:00Z 
2013-01-01T00:01:30Z 
2013-01-01T00:03:00Z 
2013-01-01T00:04:30Z 
.................... 

ответ

5

Использование datetime.strftime и вызвать map по индексу:

In [72]: 

NumberOfSamples = 10 
import datetime as dt 
dates = pd.date_range('20130101',periods=NumberOfSamples,freq='90S') 
df3 = pd.DataFrame(index=dates) 
df3.index = df3.index.map(lambda x: dt.datetime.strftime(x, '%Y-%m-%dT%H:%M:%SZ')) 
df3 
Out[72]: 
Empty DataFrame 
Columns: [] 
Index: [2013-01-01T00:00:00Z, 2013-01-01T00:01:30Z, 2013-01-01T00:03:00Z, 2013-01-01T00:04:30Z, 2013-01-01T00:06:00Z, 2013-01-01T00:07:30Z, 2013-01-01T00:09:00Z, 2013-01-01T00:10:30Z, 2013-01-01T00:12:00Z, 2013-01-01T00:13:30Z] 

Альтернативно и лучше, на мой взгляд (благодаря @unutbu) вы можете передать описатель формата to_csv:

df3.to_csv('dates.txt', header=False, date_format='%Y-%m-%dT%H:%M:%SZ') 
+0

@unutbu, что, вероятно, лучше, так как это не возмущает Orig Д.Ф., обновит спасибо – EdChum

Смежные вопросы