【问题标题】:Can I export pandas DataFrame to Excel stripping tzinfo?我可以将 pandas DataFrame 导出到 Excel 剥离 tzinfo 吗?
【发布时间】:2013-04-04 18:01:35
【问题描述】:

我在 pandas 0.10.1 中有一个时区感知 TimeSeries。我想导出到 Excel,但时区阻止日期在 Excel 中被识别为日期。

In [40]: resultado
Out[40]: 
fecha_hora
2013-04-11 13:00:00+02:00    31475.568
2013-04-11 14:00:00+02:00    37263.072
2013-04-11 15:00:00+02:00    35979.434
2013-04-11 16:00:00+02:00    35132.890
2013-04-11 17:00:00+02:00    36356.584

如果我用.tz_convert(None) 剥离 tzinfo,日期将转换为 UTC:

In [41]: resultado.tz_convert(None)
Out[41]: 
fecha_hora
2013-04-11 11:00:00    31475.568
2013-04-11 12:00:00    37263.072
2013-04-11 13:00:00    35979.434
2013-04-11 14:00:00    35132.890
2013-04-11 15:00:00    36356.584

是否有 TimeSeries 方法可以将.replace(tzinfo=None) 应用于索引中的每个日期?

或者,有没有办法将时间感知 TimeSeries 正确导出到 Excel?

【问题讨论】:

    标签: python excel pandas time-series tzinfo


    【解决方案1】:

    您可以简单地创建一个没有时区的副本。

    import pandas as pa
    
    time = pa.Timestamp('2013-04-16 10:08', tz='Europe/Berlin')
    time_wo_tz = pa.datetime(year=time.year, month=time.month, day=time.day, 
                             hour=time.hour, minute=time.minute, second=time.second,
                             microsecond=time.microsecond)
    

    当您想要转换时间序列的整个索引时,请使用列表推导式。

    ts.index = [pa.datetime(year=x.year, month=x.month, day=x.day, 
                            hour=x.hour, minute=x.minute, second=x.second, 
                            microsecond=x.microsecond) 
                for x in ts.index]
    

    【讨论】:

    • 其实我并不想遍历索引。我相信 .replace 比使用每个组件重新创建日期更清晰。
    • 好的。但是由于日期时间是不可变的(并且应该是不可变的),如果不创建副本,您可能不会找到这样的函数。写入 csv 时的某种转换功能可能会有所帮助。虽然 write_csv 似乎存在这种情况,但 to_csvto_excel 并不存在。
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 2012-07-04
    • 2019-09-03
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多