Mercurial > repos > recetox > table_pandas_rename_column
view table_pandas_rename_column.py @ 0:3f54cd56a65e draft default tip
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/tables commit d0ff40eb2b536fec6c973c3a9ea8e7f31cd9a0d6
author | recetox |
---|---|
date | Wed, 29 Jan 2025 15:35:31 +0000 |
parents | |
children |
line wrap: on
line source
import argparse import logging from typing import Tuple import pandas as pd from utils import KeyValuePairsAction, LoadDataAction, StoreOutputAction def rename_columns(df: pd.DataFrame, rename_dict: dict): """ Rename columns in the dataframe based on the provided dictionary. Parameters: df (pd.DataFrame): The input dataframe. rename_dict (dict): A dictionary with 1-based column index as key and new column name as value. Returns: pd.DataFrame: The dataframe with renamed columns. """ try: rename_map = { df.columns[key - 1]: value for key, value in rename_dict.items() } # Convert 1-based index to column name return df.rename(columns=rename_map) except IndexError as e: logging.error(f"Invalid column index: {e}") raise except Exception as e: logging.error(f"Error renaming columns: {e}") raise def main(input_dataset: pd.DataFrame, rename_dict: dict, output_dataset: Tuple[callable, str]): """ Main function to load the dataset, rename columns, and save the result. Parameters: input_dataset (pd.DataFrame): The input dataset . rename_dict (dict): A dictionary with 1-based column index as key and new column name as value. output_dataset (tuple): The function to store the output dataset and the path. """ try: write_func, file_path = output_dataset write_func(rename_columns(input_dataset, rename_dict), file_path) except Exception as e: logging.error(f"Error in main function: {e}") raise if __name__ == "__main__": logging.basicConfig(level=logging.INFO) parser = argparse.ArgumentParser(description="Rename columns in a dataframe.") parser.add_argument( "--input_dataset", nargs=2, action=LoadDataAction, required=True, help="Path to the input dataset and its file extension (csv, tsv, parquet)", ) parser.add_argument( "--rename", nargs="+", action=KeyValuePairsAction, required=True, help="List of key=value pairs with 1-based column index as key and new column name as value", ) parser.add_argument( "--output_dataset", nargs=2, action=StoreOutputAction, required=True, help="Path to the output dataset and its file extension (csv, tsv, parquet)", ) args = parser.parse_args() main(args.input_dataset, args.rename, args.output_dataset)