计算熊猫百分比

时间:2020-03-20 11:46:55

标签: python-3.x pandas

我有一个类似的数据框

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中的列名称进行更改。谁能提出解决方案。

0 个答案:

没有答案