如何解决带有pathlib路径过滤的pandas数据框
我正在尝试通过其路径和路径项过滤如下所示的数据框:
from pathlib import Path
import pandas as pd
lst = [('100',Path('/root/sub1/nameA.txt'),'some_type'),('101',Path('/root/sub1/nameB.txt'),('102',Path('/root/sub2/nameC.txt'),'other_type')]
df = pd.DataFrame(lst,columns = ['id','path','category'])
print(df)
目前我正在寻找所有元素,其父元素为 sub1(即 dir sub1 中的所有文件)。 通常,我希望能够通过其路径的某些属性来过滤 df。
我知道 Path.parent
属性并且已经使用它一段时间了。我还知道 df['path'].str.contains()
等过滤器选项不适用于 df 条目中的路径对象。
有什么建议吗?感谢您的帮助!
在评论中回答 Manakins 的问题 - 示例输出
df[df['path'].apply(Path.parent == '/root/sub1')] # does of course not work!
# desired output
df
id path category
0 100 '/root/sub1/nameA.txt' 'some_type'
1 101 '/root/sub1/nameB.txt' 'some_type'
解决方法
如果你想使用 pathlib 对象,那么你必须使用 apply
df[df['path'].apply(lambda x : x.parent == Path('/root/sub1'))]
id path category
0 100 \root\sub1\nameA.txt some_type
1 101 \root\sub1\nameB.txt some_type
您可以将对象转换为字符串,但会得到一个可能不正确的绝对路径。
,在另一个平台上,我提到了 pandas-path 项目,我想将其链接到这里,作为可能遇到相同问题的任何人的另一种方法,我曾经遇到过。该项目提供了具有 pathlib 功能的 pandas accessor。
请注意:我没有尝试或使用过任何形式的链接库,因此无法对其功能或可用性发表评论。我只是将链接作为“帮助之手”提供给任何想要尝试的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。