【发布时间】:2022-10-05 14:44:29
【问题描述】:
我有一个如下所示的熊猫数据框
df1 = pd.DataFrame({'sfassaasfsa_id': [1321352,2211252],'SUB':['Phy','Phy'],'Revasfasf_Q1':[8215215210,1221500],'Revsaffsa_Q2':[6215120,525121215125120],'Reaasfasv_Q3':[20,12],'Revfsasf_Q4':[1215120,11221252]})
我正在尝试执行以下操作
a) 根据SUB 的唯一值过滤数据帧
b) 将它们存储在多个文件中
column_name = "SUB"
col_name = "Reaasfasv_Q3"
for i,j in dict.fromkeys(zip(df1[column_name], df1[col_name])).keys():
data_output = df1.query(f"{column_name} == @i & {col_name} == @j")
if len(data_output) > 0:
output_path = Path.cwd() / f"{i}_{j}_output.xlsx"
print("output path is ", output_path)
writer = pd.ExcelWriter(output_path, engine='xlsxwriter')
data_output.to_excel(writer,sheet_name='results',index=False)
for column in data_output:
column_length = max(data_output[column].astype(str).map(len).max(), len(column))
col_idx = data_output.columns.get_loc(column)
writer.sheets['results'].set_column(col_idx, col_idx, column_length)
writer.save()
虽然代码工作正常,但问题在于调整column_length
如何根据内容类型调整列长度以适合。
我希望我的输出有一个所有列都正确自动适应的 excel 文件。
虽然它可能适用于我的示例数据,但还有其他更好的方法可以使用pd.ExcelWriter 自动调整列宽吗?
【问题讨论】:
-
你的方法是我建议的,并且在我需要在 xlsxwriter 中“自动调整”的时候成功使用。如果您尚未阅读此 SO 问题stackoverflow.com/questions/33665865/adjust-cell-width-in-excel,则有几个不同的选项。我之前尝试过 dtl85 建议的选项略有不同,但是它没有正确调整列。
标签: python excel pandas dataframe xlsxwriter