当使用pandas.to_excel时,格式化timedelta64。

问题描述 投票:5回答:1

我正在使用一个名为 "Dreamweaver "的软件向一个excel文件中写入内容。ExcelWriter:

writer = pd.ExcelWriter(fn,datetime_format=' d  hh:mm:ss')
df.to_excel(writer,sheet_name='FOO')

写入操作成功,打开相应的excel文件,我看到datetimes的格式很好,符合要求。但是,数据框中另一列的dtype为 timedelta64[ns] 自动转换为一个数值,所以在Python中我看到了

0 days 00:23:33.499998

而在excel中。

 0.016359954

这很可能是相同的持续时间换算成天数。 有没有什么办法来控制timedelta的格式,使用 pd.ExcelWriter?

python pandas timedelta
1个回答
5
投票

Excel没有timedelta或等价物的数据类型,所以你有几个不完美的选择。

为了在Excel中保持它们的 "日期性",你可以转换为日期时间,然后在Excel中以只显示时间部分的格式显示它们。

df = pd.DataFrame({'td': [pd.Timedelta(1, 'h'), pd.Timedelta(1.5, 'h')]})
df['td_datetime']
df['td_datetime'] = df['td'] + pd.Timestamp(0)

writer = pd.ExcelWriter('tmp.xlsx', datetime_format='hh:mm:ss')
df.to_excel(writer)
# tmp.xlsx
# td         td_datetime
# 0.041667   01:00:00
# 0.0625     01:30:00

另外,你也可以在序列化之前将其格式化为字符串。

df['td_str'] = df['td'].astype(str)

df
Out[24]: 
        td                     td_str
0 01:00:00  0 days 01:00:00.000000000
1 01:30:00  0 days 01:30:00.000000000
© www.soinside.com 2019 - 2024. All rights reserved.