用数据框中的绝对路径替换相对路径

Replace relative path with absolute path in dataframe

我有一个企业工具可以从具有相对路径的系统中导出文件。我想使用导出的数据作为 Python 脚本中的导入来重命名文件。数据导出如下所示:

DOCID   FILENAME    FILE_PATH
SS-WS-000471    2019-01 Civic CM #20-14-01.pdf  .\VOL01\NATIVES\NATIVE001\WS-000471.pdf
SS-WS-000472    2019-01 Civic CM #20-14-02.pdf  .\VOL01\NATIVES\NATIVE001\WS-000472.pdf

我正在尝试将 FILE_PATH 列中的相对路径更改为绝对路径。我尝试使用 replace 将 .\ 替换为从导入文件中提取的目录。我在网上进行了大量搜索并尝试了很多方法,但无法完全实现。

我想要的结果是将 .\ 更改为 X:\NYC\Schley23\ 这是包含 \VOL01\NATIVES...

的目录结构

我的代码如下。

import os
import pathlib
import pandas as pd

#input file
infile = r'X:\NYC\Schley23220107 Test_export.csv'

#get filepath from input file
p = os.path.dirname(infile)

#create dataframe from input file
xref = pd.read_csv(infile)

#replace .\ with path information
xref['FILE_PATH'] = xref['FILE_PATH'].apply(lambda x: x.replace('\.\\', p))

如有任何建议,我们将不胜感激。

使用str.replace:

df['FILE_PATH'] = df['FILE_PATH'].str.replace(r'^\.', r'X:\NYC\Schley\3223', regex=True)
print(df)

# Output
          DOCID                        FILENAME                                          FILE_PATH
0  SS-WS-000471  2019-01 Civic CM #20-14-01.pdf  X:\NYC\Schley23\VOL01\NATIVES\NATIVE001\WS-...
1  SS-WS-000472  2019-01 Civic CM #20-14-02.pdf  X:\NYC\Schley23\VOL01\NATIVES\NATIVE001\WS-...

您可以使用pathlib

file_dir = pathlib.Path("X:\NYC\Schley\3223\") # you can use pathlib.Path().cwd

df['FILE_PATH'] = df['FILE_PATH'].apply(lambda x: pathlib.Path(file_dir, x).absolute())

优点:

  1. 适用于 Windows 和 Unix。
  2. 处理各种形式的路径前缀。
  3. 处理前导和尾随斜杠。