我正在使用 openpyxl 引擎将工作表附加到 Excel 工作表。我发现了一些可以调整列大小的代码,但是在使用 openpyxl 附加工作表时它不起作用。这是我的代码:
import pandas as pd
filename = 'December 2022 Report'
df = pd.read_excel(f'{filename}.xlsx')
# creates new df of properties with at least 5 repeats
df2 = df.groupby(by='u_identifier', as_index=True).filter(lambda x : len(x)>=5)
with pd.ExcelWriter(f'{filename}-FILTERED.xlsx') as writer:
df2.to_excel(writer, index=False, sheet_name='filtered_list')
# auto-sizes columns
for column in df2:
column_width = max(df[column].astype(str).map(len).max(), len(column))
col_idx = df.columns.get_loc(column)
writer.sheets['filtered_list'].set_column(col_idx, col_idx, column_width)
flagged_count = df2.groupby('Property name', as_index=True).size().to_frame('count').reset_index()
with pd.ExcelWriter(f'{filename}-FILTERED.xlsx', engine='openpyxl', mode='a') as writer:
flagged_count.to_excel(writer, index=False, sheet_name='count')
all_count_df = df.groupby('Property name', as_index=True).size().to_frame('count')
with pd.ExcelWriter(f'{filename}-FILTERED.xlsx', engine='openpyxl', mode='a') as writer:
all_count_df.to_excel(writer, sheet_name='all_count')
all_count_df.to_excel('all_properties_count.xlsx')
这是一个旁注,但如果我像使用 flagged_count 一样重置 all_count_df 的索引,然后在 to_excel 函数中将索引设置为 False 会更好吗?我不知道哪种方法更“合适”,所以我只是用不同的工作表做了这两种方法。就数据在最终 Excel 工作簿中的显示方式而言,似乎没有任何重大差异。