【问题标题】:python pandas regex find pattern from another rowpython pandas 正则表达式从另一行查找模式
【发布时间】: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. 对于每一行,计算其长度并匹配那些比当前行少 1 个长度的 AND,

  2. 之前的所有项目都匹配(完全相同)

我该怎么做?

【问题讨论】:

    标签: python pandas string path


    【解决方案1】:

    使用pathlib.Path.parent提取父级,如下:

    import pandas as pd
    import pathlib
    
    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"])
    
    
    df["parent"] = df["file_path"].apply(lambda x: pathlib.Path(x).parent)
    print(df)
    

    输出

                          file_path              parent
    0                         /home                   /
    1                 /home/folder1               /home
    2      /home/folder1/file1.xlsx       /home/folder1
    3      /home/folder1/file1.xlsx       /home/folder1
    4      /home/folder1/file2.xlsx       /home/folder1
    5                 /home/folder2               /home
    6            /home/folder2/date       /home/folder2
    7  /home/folder2/date/dates.txt  /home/folder2/date
    8                 /home/folder3               /home
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      相关资源
      最近更新 更多