Dies ist der Datenrahmen, der verwendet wird:
import pandas as pd
df = pd.DataFrame({'path': ['/home/dir1/myfile1.txt', \
'/home/anotherDir2/myfile2.txt', \
'/home/anotherDir3/AnotherMyfile3.txt']})
Sie apply()
verwenden können, durch die Reihen der df
zu gehen und alles extrahieren, die vor dem letzten '/'
ist:
df.path.apply(lambda x: x[0:x.rfind('/')])
Welche zurück :
0 /home/dir1
1 /home/anotherDir2
2 /home/anotherDir3
Name: path, dtype: object
In ähnlicher Weise können Sie tun das gleiche, alles zu extrahieren, die nach dem letzten '/'
ist:
df.path.apply(lambda x: x[(x.rfind('/') + 1):len(x)])
Welche zurück:
0 myfile1.txt
1 myfile2.txt
2 AnotherMyfile3.txt
Name: path, dtype: object
Wenn Sie beide, Ordner und die Datei erhalten möchten, können Sie ein verwenden Funktion wie diese, die eine Zeichenfolge von '/'
teilt und gibt die letzten zwei Elemente:
def split_path(path):
folder_file = path.split('/')[-2:]
return(pd.Series({'folder': folder_file[0], 'file': folder_file[1]}))
Dann können Sie apply()
es und fügen Sie die 2 c olumns auf Ihre df:
pd.concat([df, df.path.apply(split_path)], axis=1)
Welche zurück:
path file folder
0 /home/dir1/myfile1.txt myfile1.txt dir1
1 /home/anotherDir2/myfile2.txt myfile2.txt anotherDir2
2 /home/anotherDir3/AnotherMyfile3.txt AnotherMyfile3.txt anotherDir3