【问题标题】:pandas save date in ISO format?熊猫以ISO格式保存日期?
【发布时间】:2015-04-28 01:09:49
【问题描述】:

我正在尝试生成一个 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)

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
....................

【问题讨论】:

    标签: python datetime pandas


    【解决方案1】:

    使用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')
    

    【讨论】:

    • 我认为使用datetime 中的isoformat() 方法可能比使用自定义格式的strftime() 更可靠。类似df3.index = df3.index.to_series().apply(dt.datetime.isoformat)
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 2014-02-23
    • 2018-07-05
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多