first draft of pathfunctions
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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
|
||||
Reference in New Issue
Block a user