我有一个类似的数据框
A B
1 2
5 5
0 5
我希望输出datafrme像
A B C
1 2 50.00%
5 5 100.00%
0 5 0.00%
我尝试使用标准方法
df['C']=((df['A'] / df['B']) *100.00).round(2).astype(float)
但是当我将数据框导出到excel时,它就迷上了单个小数。你能帮忙吗?我试图使用astype(str)来正确获取某些数字的小数,但后来我无法在该列上执行excel公式。
我想出了一种使用下面的代码的方法
from io import BytesIO
with BytesIO() as b:
# Use the StringIO object as the filehandle.
writer = pd.ExcelWriter(b, engine='xlsxwriter')
data_df_final.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format2 = workbook.add_format({'num_format': '0.00%'})
worksheet.set_column('AD:AD', None, format2)
writer.save()
return HttpResponse(b.getvalue(), content_type='application/vnd.ms-excel')
但是问题是在excel中列位置可以是动态的,因此AD位置可以根据excel中的列名称进行更改。谁能提出解决方案。