|
import pandas as pd |
|
|
|
from utils.convert_to_excel import convert_dfs, save_dataframe |
|
from utils.utils_vars import UtilsVars |
|
|
|
TRX_COLUMNS = [ |
|
"ID_BTS", |
|
"trxRfPower", |
|
"BCCH", |
|
"TCH", |
|
"number_trx_per_cell", |
|
"number_trx_per_site", |
|
] |
|
|
|
|
|
def process_trx_data(file_path: str): |
|
""" |
|
Process data from the specified file path. |
|
|
|
Args: |
|
file_path (str): The path to the file. |
|
""" |
|
|
|
dfs = pd.read_excel( |
|
file_path, |
|
sheet_name=["BTS", "BCF", "TRX"], |
|
engine="calamine", |
|
skiprows=[0], |
|
) |
|
|
|
|
|
df_trx = dfs["TRX"] |
|
df_trx.columns = df_trx.columns.str.replace(r"[ ]", "", regex=True) |
|
df_trx["ID_BTS"] = df_trx[["BSC", "BCF", "BTS"]].astype(str).apply("_".join, axis=1) |
|
df_trx["ID_BCF"] = df_trx[["BSC", "BCF"]].astype(str).apply("_".join, axis=1) |
|
df_trx["number_trx_per_cell"] = df_trx.groupby("ID_BTS")["ID_BTS"].transform( |
|
"count" |
|
) |
|
df_trx["number_trx_per_site"] = df_trx.groupby("ID_BCF")["ID_BCF"].transform( |
|
"count" |
|
) |
|
|
|
bcch = df_trx[df_trx["channel0Type"] == 4] |
|
tch = df_trx[df_trx["channel0Type"] == 3][["ID_BTS", "initialFrequency"]] |
|
|
|
tch = tch.pivot_table( |
|
index="ID_BTS", |
|
values="initialFrequency", |
|
aggfunc=lambda x: " ".join(map(str, x)), |
|
) |
|
|
|
tch = tch.reset_index() |
|
|
|
|
|
tch.columns = ["ID_BTS", "TCH"] |
|
|
|
|
|
|
|
df_trx = pd.merge(bcch, tch, on="ID_BTS", how="left") |
|
|
|
df_trx = df_trx.rename(columns={"initialFrequency": "BCCH"}) |
|
df_trx = df_trx[TRX_COLUMNS] |
|
|
|
|
|
|
|
|
|
|
|
|
|
return df_trx |
|
|
|
|
|
|
|
|