pandas 带有 pathlib 路径过滤的数据框
pandas dataframe with pathlib Path filtering
我正在尝试按其路径和路径项过滤如下所示的数据框:
from pathlib import Path
import pandas as pd
lst = [('100', Path('/root/sub1/nameA.txt'), 'some_type'),
('101', Path('/root/sub1/nameB.txt'), 'some_type'),
('102', Path('/root/sub2/nameC.txt'), 'other_type')]
df = pd.DataFrame(lst, columns = ['id', 'path', 'category'])
print(df)
目前我正在寻找其父级为 sub1 的所有元素(即目录 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 project, which I want to link here as another approach for anybody who might have the same problem, I had. The project provides a pandas accessor。
请注意:我没有尝试或使用过 linked 库,因此无法对其功能或可用性发表评论。我只是将 link 作为“帮助之手”提供给可能想要尝试的任何人。
我正在尝试按其路径和路径项过滤如下所示的数据框:
from pathlib import Path
import pandas as pd
lst = [('100', Path('/root/sub1/nameA.txt'), 'some_type'),
('101', Path('/root/sub1/nameB.txt'), 'some_type'),
('102', Path('/root/sub2/nameC.txt'), 'other_type')]
df = pd.DataFrame(lst, columns = ['id', 'path', 'category'])
print(df)
目前我正在寻找其父级为 sub1 的所有元素(即目录 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 project, which I want to link here as another approach for anybody who might have the same problem, I had. The project provides a pandas accessor。
请注意:我没有尝试或使用过 linked 库,因此无法对其功能或可用性发表评论。我只是将 link 作为“帮助之手”提供给可能想要尝试的任何人。