pandas以ISO格式保存日期?

Bor*_*w37 5 python datetime pandas

我正在尝试生成一个Pandas DataFrame,其中date_range是一个索引.然后将其保存为CSV文件,以便日期以ISO-8601格式写入.

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)
Run Code Online (Sandbox Code Playgroud)

date.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
...................
Run Code Online (Sandbox Code Playgroud)

我试图让它看起来像:

2013-01-01T00:00:00Z
2013-01-01T00:01:30Z
2013-01-01T00:03:00Z
2013-01-01T00:04:30Z
....................
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 6

使用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]
Run Code Online (Sandbox Code Playgroud)

或者在我看来更好(感谢@unutbu)你可以将格式说明符传递给to_csv:

df3.to_csv('dates.txt', header=False, date_format='%Y-%m-%dT%H:%M:%SZ')
Run Code Online (Sandbox Code Playgroud)

  • 我认为使用“datetime”中的“isoformat()”方法可能比使用自定义格式的“strftime()”更可靠。类似于“df3.index = df3.index.to_series().apply(dt.datetime.isoformat)” (2认同)