Home > Software design >  How to convert data from DataFrame to form
How to convert data from DataFrame to form

Time:02-24

I'm trying to make a report and then convert it to the prescribed form but I don't know how. Below is my code:

data = pd.read_csv('https://raw.githubusercontent.com/hoatranobita/reports/main/Loan_list_test.csv')
data_pivot = pd.pivot_table(data,('CLOC_CUR_XC_BL'),index=['BIZ_TYPE_SBV_CODE'],columns=['TERM_CODE','CURRENCY_CD'],aggfunc=np.sum).reset_index
print(data_pivot)

Pivot table shows as below:

<bound method DataFrame.reset_index of TERM_CODE            Ng?n h?n               Trung h?n            
CURRENCY_CD            1. VND      2. USD      1. VND      2. USD
BIZ_TYPE_SBV_CODE                                                
201                 170000.00         NaN    43533.42         NaN
202                2485441.64  5188792.76  2682463.04  1497309.06
204                  35999.99         NaN         NaN         NaN
301                1120940.65         NaN   190915.62   453608.72
401                 347929.88   182908.01   239123.29         NaN
402                 545532.99         NaN   506964.23         NaN
403                  21735.74         NaN     1855.92         NaN
501                  10346.45         NaN         NaN         NaN
601                 881974.40         NaN    50000.00         NaN
602                 377216.09         NaN   828868.61         NaN
702                   9798.74         NaN    23616.39         NaN
802                 155099.66         NaN   762294.95         NaN
803                  23456.79         NaN    97266.84         NaN
804                 151590.00         NaN   378000.00         NaN
805                 182925.30    54206.52  4290216.37         NaN>

Here is the prescribed form:

form = pd.read_excel('https://github.com/hoatranobita/reports/blob/main/Form A00034.xlsx?raw=true')
form.head()


Mã ngành kinh tế    Dư nợ tín dụng (không bao gồm mua, đầu tư trái phiếu doanh nghiệp)  Unnamed: 2  Unnamed: 3  Unnamed: 4  Unnamed: 5
0   NaN Ngắn hạn    NaN Trung và dài hạn    NaN Tổng cộng
1   NaN Bằng VND    Bằng ngoại tệ   Bằng VND    Bằng ngoại tệ   NaN
2   101.0   NaN NaN NaN NaN NaN
3   201.0   NaN NaN NaN NaN NaN
4   202.0   NaN NaN NaN NaN NaN

As you see, pivot table have no 101 but form has. So what I have to do to convert from Dataframe to Form that skip 101.

Thank you.

CodePudding user response:

Hi First create a worksheet using xlsxwriter

import xlsxwriter

#start workbook
workbook = xlsxwriter.Workbook('merge1.xlsx')

#Introduce formatting
format = workbook.add_format({'border': 1,'bold': True})

#Adding a worksheet
worksheet = workbook.add_worksheet()

merge_format = workbook.add_format({
    'bold':1,
    'border': 1,
    'align': 'center',
    'valign': 'vcenter'})

#Starting the Headers
worksheet.merge_range('A1:A3', 'Mã ngành kinh tế', merge_format)
worksheet.merge_range('B1:F1', 'Dư nợ tín dụng (không bao gồm mua, đầu tư trái phiếu doanh nghiệp)', merge_format)
worksheet.merge_range('B2:C2', 'Ngắn hạn', merge_format)
worksheet.merge_range('D2:E2', 'Trung và dài hạn', merge_format)
worksheet.merge_range('F2:F3', 'Tổng cộng', merge_format)

worksheet.write(2, 1, 'Bằng VND',format)
worksheet.write(2, 2, 'Bằng ngoại tệ',format)
worksheet.write(2, 3, 'Bằng VND',format)
worksheet.write(2, 4, 'Bằng ngoại tệ',format)

After this formatting you can start writing to sheet looping through using worksheet.write() below I have included a sample

 expenses = (
     ['Rent', 1000],
     ['Gas',   100],
     ['Food',  300],
     ['Gym',    50],
 )

 for item, cost in (expenses):
     worksheet.write(row, col,     item)
     row  = 1 

In row and col you can specify the cell row and column number it goes as a numerical value like a matrix.

And finally close the workbook

workbook.close()
  • Related