【问题标题】:Python Pandas custom time format in Excel outputExcel输出中的Python Pandas自定义时间格式
【发布时间】:2014-11-11 23:28:07
【问题描述】:

我使用pandas.groupby 将 pandas DataFrame 分组到两列并计算平均时间和中位数时间。我生成的数据集与此类似:

Size        Category        Average Time        Median Time
 1             A            0.002056385         0.000310995
               B                                0.000310995
               C            0.000310995
 10            A                                0.001852681
               B            0.000310995
               C            0.000310995

我想将此表导出到 Excel 并将时间列格式化为 Excel 中的自定义格式,如下所示 (hh:mm:ss.000)。换句话说,我想将时间视为毫秒级时间。例如,以这种方式格式化的 0.000310995 显示为 00:00:26.870(26.870 秒)。

有人知道如何完成这项壮举吗?

更新:

通过使用to_datetime(df['Average Time'], unit='d'),我离得更近了一点。我的时间现在被格式化为 DataFrame 中的1970-01-01 00:02:57.638400。但是,当使用 to_excel 导出到 Excel 时,它们在 Excel 输出中被格式化为 1970-01-01 00:02:58。此时,我只需要删除日期部分并添加毫秒精度即可实现我的目标。有什么想法吗?

非常感谢您提供的任何帮助 -

【问题讨论】:

  • @pnuts 通过对原始帖子的编辑添加了一个示例
  • @pnuts 很好的一点 - 你的问题让我意识到我的问题可能最好通过在导出到 Excel 之前将 float64 转换为 pandas 中的格式化时间来解决。关于实现这一目标的最佳方法的任何想法?我正在使用to_datetime,但在使用format= 字符串时遇到了一些问题。当我转换为日期时间时,这些时间显示为 1970-01-01。

标签: python excel pandas formatting milliseconds


【解决方案1】:

您可以在 Pandas 中使用ExcelWriterdatetime_format 参数:

import pandas as pd
from datetime import datetime


df = pd.DataFrame([datetime(2014, 9, 18, 12, 30, 5, 60000)])

writer = pd.ExcelWriter("time.xlsx",  datetime_format='hh:mm:ss.000')

df.to_excel(writer, "Sheet1")

writer.close()

它给出以下输出:

另见Working with Python Pandas and XlsxWriter

【讨论】:

  • 我想知道如果有 datetime (=df.index)、datetimemonth 列。我需要使用链接文档中显示的扩展版本吗?
  • 它应该可以工作。如果没有使用一些示例代码发布新问题。
猜你喜欢
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
相关资源
最近更新 更多