import pandas as pd import os def filepathInitalGroup(df: pd.DataFrame) -> pd.DataFrame: import os import pandas as pd from itertools import chain # 1. Split comma-separated filenames into lists df["filename_x"] = df["filename_x"].str.split(",") # 2. Explode so each filename has its own row df = df.explode("filename_x", ignore_index=True) # 3. Strip whitespace from filenames df["filename_x"] = df["filename_x"].str.strip() # 4. Split into directory and filename df["directory"] = df["filename_x"].apply(lambda x: os.path.dirname(x) if pd.notna(x) else "") df["filename"] = df["filename_x"].apply(lambda x: os.path.basename(x) if pd.notna(x) else "") # 5. Drop the original column df = df.drop(columns=["filename_x"]) # 6. Ensure all columns are lists (except directory, which is the key) for col in df.columns: if col != "directory": df[col] = df[col].apply(lambda x: x if isinstance(x, list) else [x]) # 7. Combine rows with the same directory, flatten lists, deduplicate def combine_lists(series): flat = list(chain.from_iterable(series)) # deduplicate while preserving order return list(dict.fromkeys(flat)) df = df.groupby("directory", as_index=False).agg(combine_lists) return df