使用 pd.ExcelWriter 将多个数据帧写入单个 Excel 工作簿以进行 VBA 操作



我有超过 60 个数据帧要写入 excel 模板。我的目的是在导出所有 df 后通过 vba 将所有这些粘贴到各种命名范围。

excel_writer = pd.ExcelWriter('test.xlsx')
df['state'].value_counts().to_excel(excel_writer, sheet_name='Sheet1', startrow=5, startcol=0, na_rep=0, header=True, index=True, merge_cells= True)

这按预期工作,但是当我希望添加以下两个 df 时,我得到属性错误

df_Shape = df.shape[0]
display(df_Shape)
df_Shape.to_excel(excel_writer, sheet_name='Sheet1', startrow=0, startcol=0, na_rep=0, header=True, index=True, merge_cells= True)
4802
AttributeError: 'int' object has no attribute 'to_excel'
df_Start_Date = df['rfq_create_date_time'].min()
display(df_Start_Date)
df_Start_Date.to_excel(excel_writer, sheet_name='Sheet1', startrow=3, startcol=0, na_rep=0, header=True, index=True, merge_cells= True)
Timestamp('2018-05-01 06:55:25')
AttributeError: 'Timestamp' object has no attribute 'to_excel'
excel_writer.save()

使用.to_excel时,单单元数据帧是否有额外的工作

df_Shapedf
的形状df_Start_Date是一个时间

它们不是pd.DataFrame对象,因此它们没有方法.to_excel

编辑:您可以使用必要的统计信息创建新的数据帧并将其写入同一工作表:

stats = [{
"len": df.shape[0],
"min_time": df["rfq_create_date_time"].min()
}, ] # List of dictionaries, to have a row, not column
with pd.ExcelWriter(path) as excel_writer:
pd.DataFrame(stats).to_excel(excel_writer, index=False, sheet_name='Sheet1', startrow=0)
df.to_excel(excel_writer, startrow=3, sheet_name='Sheet1'))

最新更新