Untitled
unknown
plain_text
a year ago
3.5 kB
8
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