用数据框中的绝对路径替换相对路径
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())
优点:
- 适用于 Windows 和 Unix。
- 处理各种形式的路径前缀。
- 处理前导和尾随斜杠。
我有一个企业工具可以从具有相对路径的系统中导出文件。我想使用导出的数据作为 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())
优点:
- 适用于 Windows 和 Unix。
- 处理各种形式的路径前缀。
- 处理前导和尾随斜杠。