我有几秒钟内需要转换为 H:MM:SS 的数据。当这些数据进来时,它在单独的列中也有一个日期字段。我需要将秒数据转换为 H:MM:SS 但将日期字段保留为日期。我需要输出看起来像 Excel 中所需的输出。我试过使用 Excel writer 并设置 date_format 或 datetime_format 的默认格式,但是这会转换 Excel 文件中的所有日期时间列。jmcnamara 之前的回复表明这是因为单元格格式优先于列或行格式。这是我已经开始工作的一些示例代码,但它不是很pythonic。它涉及将数据框保存到 excel,然后重新打开那个确切的文件。# importsimport pandas as pdimport randomfrom openpyxl import load_workbookfrom openpyxl.styles import NamedStyle# generate datanumbers = (random.sample(range(500, 2000), 10))df = pd.DataFrame(numbers)df.rename(columns={df.columns[0]:'Time'}, inplace=True)# convert to timedf['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 filewriter = pd.ExcelWriter('test.xlsx', engine = 'xlsxwriter')df.to_excel(writer, sheet_name= 'Sheet 1', index=False)writer.save()# load just created filewb = load_workbook('test.xlsx')ws = wb.active# set format styledate_style = NamedStyle(name='datetime', number_format='h:mm:ss')# simple way to format but also formats column headerfor 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_stylewb.save('test.xlsx')wb.close()我如何重写它,而不必重新打开 excel 文件以将不同的列更改为不同的日期时间格式?所需的输出也无法在 excel 中作为字符串读取。我需要能够从时间戳中得出平均值和总和。
添加回答
举报
0/150
提交
取消