Pandas - более быстрый способ разбить на последний \ и использовать часть строки в новом столбце - PullRequest
0 голосов
/ 24 августа 2018

Я создал цикл while, который отделяет путь к файлу от столбца file / exe кадра данных pandas и помещает путь к файлу в новый столбец.

#Count rows
rows = len(DF1)
#While loop to grab file path - new column
index = 0
while (index < rows):
  DF1['ParentPath'].iloc[index] = DF1['ParentPathExe'].iloc[index].rsplit('\\', 1)[0]
  DF1['ChildPath'].iloc[index] = DF1['ChildPathExe'].iloc[index].rsplit('\\', 1)[0]
  index = index + 1

Это работает, но очень медленно на 6,5 миллионов строк. Столбец file / exe заполняется такими элементами:

C:\Windows\System32\conhost.exe
C:\Windows\System32\svchost.exe
C:\Windows\System32\raserver\raserver.exe   

Некоторые пути к файлам имеют 3 "\", некоторые имеют 4,5,6 "\" и т. Д.

Я использую следующий код для удаления .exe, и это очень быстро.

#Strip out EXE into new column
DF1['ParentExe'] = DF1['ParentPathExe'].str.split('\\').str[-1]
DF1['ChildExe'] = DF1['ChildPathExe'].str.split('\\').str[-1]

Есть ли способ избежать внешнего вида и сделать что-то похожее на то, что я сделал для .exe-файлов?

1 Ответ

0 голосов
/ 27 августа 2018

Я переписал строки Child и Parent, разделив их на путь к файлу и .exe, используя rsplit:

#Split ParentPathExe into path and exe columns
Parent = DF1['ParentPathExe'].str.rsplit("\\", n=1, expand=True)
#Rename columns
Parent.columns = ['ParentPath', 'ParentExe']

    ParentPath                                  ParentExe
0   C:\Program Files (x86)\Wireless AutoSwitch  wrlssw.exe
1   C:\Program Files (x86)\Wireless AutoSwitch  WrlsAutoSW.exs
2   C:\Program Files (x86)\Wireless AutoSwitch  WrlsAutoSW.exs
3   C:\Windows\System32 svchost.exe
4   C:\Program Files (x86)\Wireless AutoSwitch  WrlsAutoSW.exs

#Split ChildPathExe into path and exe columns
Child = DF1['ChildPathExe'].str.rsplit("\\", n=1, expand=True)
#Rename columns
Child.columns = ['ChildPath', 'ChildExe']

    ChildPath   ChildExe
0   C:\Windows\System32 conhost.exe
1   C:\Program Files (x86)\Wireless AutoSwitch  wrlssw.exe
2   C:\Program Files (x86)\Wireless AutoSwitch  wrlssw.exe
3   C:\Program Files\Common Files\microsoft shared...   OfficeC2RClient.exe
4   C:\Program Files (x86)\Wireless AutoSwitch  wrlssw.exe
5   C:\Program Files (x86)\Wireless AutoSwitch  wrlssw.exe

Затем объединили два кадра данных:

DF1 = pd.concat([Parent, Child], axis = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...