Files
AirlockTools/utils/pathfunctions.py
T
2025-08-20 22:46:55 -04:00

40 lines
1.3 KiB
Python

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