如何从Pandas DataFrame中的路径获取基本文件名 [英] How to get the base file name from the path in a Pandas DataFrame

查看:26
本文介绍了如何从Pandas DataFrame中的路径获取基本文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含文件路径列的DataFrame。

我只想将其更改为文件名。

我的DataFrame如下所示:

df = pd.DataFrame({
    'Sr No': [18, 19, 20],
    'Email': ['Test@test.com', 'Test@test.com', 'Test@test.com'],
    'filename': [r'C:/UsersTest.csv', r'C:/UsersTest1.csv',
                 r'C:/UsersTest1.csv']
})
sr否 电子邮件 文件名
18 test@test.com C:/UsersTest.csv
19 test@test.com C:/UsersTest1.csv
20 test@test.com C:/UsersTest1.csv
  1. 文件名应仅为测试和测试1
  2. 只需编写Test@test.com两次,即一次用于Test.csv,另一次用于Test1.csv。

简而言之,我的输出应该如下所示:

df = pd.DataFrame({
    'Sr No': [18, 19, 20],
    'Email': ['Test@test.com', 'Test@test.com', 'Test@test.com'],
    'filename': ['Test', 'Test1', 'Test1']
})
sr否 电子邮件 文件名
18 test@test.com 测试
19 test@test.com 测试1
20 test@test.com 测试1

我想使用Python和 pandas DataFrame完成此操作。

我在"filename"列中有100行。

我尝试使用:

import os

import glob

myfile = os.path.basename('C:/Users/Test.csv')
os.path.splitext(myfile)
print(os.path.splitext(myfile)[0])

但只对一条路径有用,如何将其应用到整列?

推荐答案

使用Apply Function获取迭代所有列并获取分配给新列的函数输出(pd.Series)

df["filename"] = df["filename"].apply(os.path.basename)

df["filename"] = df["filename"].apply(lambda path: os.path.basename(path))

示例:

>>> df
   Sr No          Email            filename
0     18  Test@test.com   C:/UsersTest.csv
1     19  Test@test.com  C:/UsersTest1.csv
2     20  Test@test.com  C:/UsersTest1.csv
>>> df["filename"] = df["filename"].apply(os.path.basename)
>>> df
   Sr No          Email   filename
0     18  Test@test.com   Test.csv
1     19  Test@test.com  Test1.csv
2     20  Test@test.com  Test1.csv

这篇关于如何从Pandas DataFrame中的路径获取基本文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆