Untitled
unknown
plain_text
a year ago
3.5 kB
7
Indexable
Tentu saja! Di sini saya menyertakan kode untuk fungsi `mergeKRIVAPT` yang mengambil parameter `excelPT`, `excelVA`, `sheetPT`, dan `sheetVA` dengan default isi dari `sheetVA` dan `sheetPT` seperti yang Anda sebutkan. Fungsi ini akan membaca kedua file Excel dan menggabungkan nilai-nilai numerik di beberapa sheet yang telah ditetapkan, dan kemudian menyimpannya ke dalam file Excel baru dengan nama dan sheet yang baru. ```python import pandas as pd def mergeKRIVAPT(excelPT, excelVA, sheetPT=["EXTERNAL FACING Systems", "CRITICAL Systems (Internal)", "OTHER INTERNAL Systems"], sheetVA=["KRI External", "KRI Critical", "KRI Internal"]): # Load both Excel files df_pt = pd.read_excel(excelPT, sheet_name=sheetPT, header=None) df_va = pd.read_excel(excelVA, sheet_name=sheetVA, header=None) # Initialize a dictionary to store merged dataframes merged_data = {} # Define the ranges to be added for each sheet pair ranges = { "KRI External": "B2:G6", "KRI Critical": "B2:G6", "KRI Internal": "B2:H6", } # Iterate over the sheet names and ranges for va_sheet, pt_sheet in zip(sheetVA, sheetPT): va_range = ranges.get(va_sheet) if va_range: # Convert range string into row and column indices start_col, start_row = va_range[0], int(va_range[1]) end_col, end_row = va_range[-2], int(va_range[-1]) start_col_idx = ord(start_col) - ord('A') end_col_idx = ord(end_col) - ord('A') # Read the specified range from both sheets va_data = df_va[va_sheet].iloc[start_row-1:end_row, start_col_idx:end_col_idx+1] pt_data = df_pt[pt_sheet].iloc[start_row-1:end_row, start_col_idx:end_col_idx+1] # Initialize a new DataFrame for the merged data merged_df = df_va[va_sheet].copy() for r in range(start_row-1, end_row): for c in range(start_col_idx, end_col_idx+1): if pd.api.types.is_numeric_dtype(va_data.iloc[r-start_row+1, c-start_col_idx]) and pd.api.types.is_numeric_dtype(pt_data.iloc[r-start_row+1, c-start_col_idx]): merged_df.iat[r, c] = va_data.iat[r-start_row+1, c-start_col_idx] + pt_data.iat[r-start_row+1, c-start_col_idx] # Store merged DataFrame merged_data[va_sheet + " Merged"] = merged_df # Ensure Severity column is retained merged_data["KRI Internal Merged"]['Severity'] = df_va["KRI Internal"].get('Severity', None) # Save to a new Excel file with pd.ExcelWriter("processed_merged_KRIVAPT.xlsx") as writer: for sheet_name, data in merged_data.items(): data.to_excel(writer, sheet_name=sheet_name, index=False) # Contoh pemanggilan fungsi mergeKRIVAPT('excelPT.xlsx', 'excelVA.xlsx') ``` Kode tersebut akan melakukan hal-hal sebagai berikut: 1. Membaca file Excel `excelPT` dan `excelVA` sesuai dengan sheet-sheet yang disediakan atau default. 2. Mengidentifikasi rentang sel yang ingin dijumlahkan berdasarkan lembar masing-masing. 3. Menambahkan nilai-nilai yang relevan dari kedua lembar, menyimpan hasilnya dalam struktur data baru. 4. Memastikan bahwa kolom "Severity" dari `excelVA` disertakan di hasil merge. 5. Menyimpan output ke file Excel baru dengan nama `processed_merged_KRIVAPT.xlsx` dengan nama sheet yang diubah menjadi ["KRI External Merged", "KRI Critical Merged", "KRI Internal Merged"].
Editor is loading...
Leave a Comment