Как я могу разделить путь к документу до имени папки и имени документа в python? - PullRequest
1 голос
/ 07 мая 2020

Мне нужно разделить путь к документу до имени папки и имени документа в python. Это большой фрейм данных, содержащий множество строк. Для имени файла без имени документа просто оставьте столбец имени документа пустым в результате. Например, у меня есть такой фрейм данных:

     no  filename
     1  \\apple\config.csv
     2  \\apple\fox.pdf
     3  \\orange\cat.xls
     4  \\banana\eggplant.pdf
     5  \\lucy
...

Я ожидаю, что результат будет следующим:

    foldername  documentname
    \\apple     config.csv
    \\apple     fox.pdf
    \\orange    cat.xls
    \\banana    eggplant.pdf
    \\lucy 
...     

Я пробовал следующий код, но он не работает.


    y={'Foldername':[],'Docname':[]}
    def splitnames(x):
        if "." in x:
            docname=os.path.basename(x)
            rm="\\"+docname
            newur=x.replace(rm,'')
        else:
            newur=x
            docname=""
        result=[newur,docname]
        y["Foldername"].append(result[0])
        y["Docname"].append(result[1])
        return y;

    dff=df$filename.apply(splitnames)

Большое спасибо за помощь !!

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Не знаю, как вы получаете пути, но вы можете создать несколько объектов Pathlib и использовать некоторые методы класса для получения имени файла и имени папки.

:

from pathlib import Path

data = """ no  filename
     1  \\apple\\config.csv
     2  \\apple\\fox.pdf
     3  \\orange\\cat.xls
     4  \\banana\\eggplant.pdf
     5  \\lucy"""

df = pd.read_csv(StringIO(data),sep='\s+')
df['filename'] = df['filename'].apply(Path)


df['folder'] = df['filename'].apply(lambda x : x.parent if '.' in x.suffix else x)
df['document_name'] = df['filename'].apply(lambda x : x.name if '.' in x.suffix  else np.nan)


print(df)

   no              filename   folder document_name
0   1     \apple\config.csv   \apple    config.csv
1   2        \apple\fox.pdf   \apple       fox.pdf
2   3       \orange\cat.xls  \orange       cat.xls
3   4  \banana\eggplant.pdf  \banana  eggplant.pdf
4   5                 \lucy    \lucy           NaN
0 голосов
/ 07 мая 2020
...