私信  •  关注

ashish14

ashish14 最近创建的主题
ashish14 最近回复了
6 年前
回复了 ashish14 创建的主题 » 编写Python代码以使用条件语句从现有列创建新的CSV列

尝试使用此方法从路径中获取最后一部分。将字符串从最右边的一方拆分为“/”作为分隔符,并使用负索引获取最后一个元素(基本上是文件名):


file1['FileName'] = ''
file1['FileName'] = file1.apply(lambda x: x['Path'].rsplit("/", 1)[-1]  if x["FileType"]=='f' else '' , axis=1)

file1

FileType    Path    FileName
0   d   /   
1   f   /documents/csv/.zip .zip
2   d   /documents/images   
3   d   /hive/28374849  
4   f   /hadoop/jdjdjd/dnejfn.img   dnejfn.img

由于矢量化,使用比apply函数快的numpy:

file1['FileName'] = np.where(file1["FileType"]=='f', file1['Path'].str.rsplit("/", n=1).str[-1], '')

FileType    Path    FileName
0   d   /   
1   f   /documents/csv/.zip .zip
2   d   /documents/images   
3   d   /hive/28374849  
4   f   /hadoop/jdjdjd/dnejfn.img   dnejfn.img