我有一个python数据框,其文件名列如下所示:
if ($("#source svg text[text-anchor='end']").length > 0){
var n = $("#source svg text[text-anchor='end']").length;
$("#source svg text[text-anchor='end']")[n-5].innerHTML = "";
$("#source svg text[text-anchor='end']")[n-4].innerHTML = "Create your own legend";
$("#source svg text[text-anchor='end']")[n-3].innerHTML = "Create your own legend";
$("#source svg text[text-anchor='end']")[n-2].innerHTML = "Create your own legend";
$("#source svg text[text-anchor='end']")[n-1].innerHTML = "";
}
从Filename列我想用新的目标目录名替换目录名。
Filename
/var/www/html/projects/Bundesliga/Match1/STAR_SPORTS_2-20170924-200043-210917-00001.jpg
/var/www/html/projects/Bundesliga/Match1/STAR_SPORTS_2-20170924-200043-210917-00001.jpg
我尝试了以下内容:
dst = "/home/mycomp/Images'
但是我收到以下错误。
df['Filename'] = df['Filename'].str.replace(os.path.dirname(df['Filename']), dst)
答案 0 :(得分:2)
df['Filename'] = df['Filename'].apply(lambda x: x.replace(os.path.dirname(x), dst))
答案 1 :(得分:1)
问题出在os.path.dirname(df['Filename'])
:您正在Series
传递str
。您可以filenames = df['Filename'].str.split('/').str[-1]
获取不带目录的文件名,然后dst + '/' + filenames
获取新路径。最好定义dst = '"/home/mycomp/Images/'
答案 2 :(得分:0)
这是使用正则表达式的一种方法。
import os, re
dst = r'/home/mycomp/Images'
paths = '|'.join([re.escape(s) for s in set(df['Filename'].map(os.path.dirname))])
df['Filename'] = df['Filename'].str.replace(paths, dst)
# Filename
# 0 /home/mycomp/Images/STAR_SPORTS_2-20170924-200...
# 1 /home/mycomp/Images/STAR_SPORTS_2-20170924-200...
<强>解释强>
|
[regex或]分隔的单个字符串。这样可以确保替换系列中的所有路径。os.path.dirname
提取跨平台的正确路径。pd.Series.str.replace
与正则表达式一起使用dst
输入替换所有路径。