如何将秒转换为 H:MM:SS 并将日期保留在单独的列中

我有几秒钟内需要转换为 H:MM:SS 的数据。当这些数据进来时,它在单独的列中也有一个日期字段。我需要将秒数据转换为 H:MM:SS 但将日期字段保留为日期。我需要输出看起来像 Excel 中所需的输出。

我试过使用 Excel writer 并设置 date_format 或 datetime_format 的默认格式,但是这会转换 Excel 文件中的所有日期时间列。jmcnamara 之前的回复表明这是因为单元格格式优先于列或行格式。


这是我已经开始工作的一些示例代码,但它不是很pythonic。它涉及将数据框保存到 excel,然后重新打开那个确切的文件。


# imports

import pandas as pd

import random

from openpyxl import load_workbook

from openpyxl.styles import NamedStyle



# generate data

numbers = (random.sample(range(500, 2000), 10))

df = pd.DataFrame(numbers)

df.rename(columns={df.columns[0]:'Time'}, inplace=True)



# convert to time

df['Timestamp'] = pd.to_timedelta(df['Time'], unit='s') + pd.Timestamp(0)

#df['Openpyxl Time'] = pd.to_timedelta(df['Time'], unit='s') + pd.Timestamp(0)



# write to file

writer = pd.ExcelWriter('test.xlsx', engine = 'xlsxwriter')

df.to_excel(writer, sheet_name= 'Sheet 1', index=False)

writer.save()


# load just created file

wb = load_workbook('test.xlsx')

ws = wb.active


# set format style

date_style = NamedStyle(name='datetime', number_format='h:mm:ss')


# simple way to format but also formats column header

for cell in ws['C']:

    cell.style = date_style


#more complex way to format, but does not format column header

# for row in ws.iter_rows('C{}:C{}'.format(ws.min_row+1, ws.max_row)):

#     for cell in row:

#         cell.style = date_style


wb.save('test.xlsx')

wb.close()

我如何重写它,而不必重新打开 excel 文件以将不同的列更改为不同的日期时间格式?


所需的输出也无法在 excel 中作为字符串读取。我需要能够从时间戳中得出平均值和总和。


凤凰求蛊
浏览 196回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python