【发布时间】:2022-07-20 17:09:12
【问题描述】:
我有一个具有以下模式的 python pandas 数据框:
| file_path |
|---|
| /home |
| /home/folder1 |
| /home/folder1/file1.xlsx |
| /home/folder1/file2.xlsx |
| /home/folder2 |
| /home/folder2/date |
| /home/folder2/date/dates.txt |
| /home/folder3 |
我想在新列中获取父路径,如果没有父路径,则将其称为“ROOT”
| file_path | parent_path |
|---|---|
| /home | ROOT |
| /home/folder1 | /home |
| /home/folder1/file1.xlsx | /home/folder1 |
| /home/folder1/file2.xlsx | /home/folder1 |
| /home/folder2 | /home |
| /home/folder2/date | /home/folder2 |
| /home/folder2/date/dates.txt | /home/folder2/date |
| /home/folder3 | /home |
我的尝试:
import re
import pandas as pd
df = pd.DataFrame(["/home", "/home/folder1", "/home/folder1/file1.xlsx",
"/home/folder1/file1.xlsx", "/home/folder1/file2.xlsx", "/home/folder2",
"/home/folder2/date", "/home/folder2/date/dates.txt", "/home/folder3"], columns=["file_path"])
# Get list
file_paths = df.file_path.unique()
def match_parent(x, file_paths):
x = x.split('/')
levels = len(x)
# Check that parent contains all elements of x and the length is 1 less
我正在考虑创建一个函数:
-
对于每一行,计算其长度并匹配那些比当前行少 1 个长度的 AND,
-
之前的所有项目都匹配(完全相同)
我该怎么做?
【问题讨论】: