我正在尝试生成一个Pandas数据框,其中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)
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
....................
2条答案
按热度按时间lp0sw83n1#
使用
datetime.strftime
并在索引上调用map
:在我看来,另一种更好的方法(多亏了@unutbu)是向
to_csv
传递一个格式说明符:cvxl0en22#
使用
pd.Index.strftime
:如果您确定所有日期都是UTC,则可以硬编码格式:
它给出
2013-01-01T00:00:00Z
等等。注意“Z”表示UTC!使用
pd.Timestamp.isoformat
和pd.Index.map
:2013-01-01T00:00:00
.如果你先给日期加上一个时区(比如把tz="UTC"
传递给date_range
),你会得到:2013-01-01T00:00:00+00:00
,它也符合ISO-8601,但表示法不同。这适用于任何dateutil
或pytz
时区,当时钟从夏令时切换到标准时间时,不会留下模糊的空间。