gpt4 book ai didi

python - 用 Pandas 处理路径的最佳方法

转载 作者:行者123 更新时间:2023-12-03 17:24:56 25 4
gpt4 key购买 nike

当我有一个 pd.DataFrame有了路径,我最终做了很多 .map(lambda path: Path(path).{method_name} , 或 apply(axis=1)例如:

(
pd.DataFrame({'base_dir': ['dir_A', 'dir_B'], 'file_name': ['file_0', 'file_1']})
.assign(full_path=lambda df: df.apply(lambda row: Path(row.base_dir) / row.file_name, axis=1))
)
base_dir file_name full_path
0 dir_A file_0 dir_A/file_0
1 dir_B file_1 dir_B/file_1

这对我来说似乎很奇怪,尤其是因为 pathlib确实实现 /所以像 df.base_dir / df.file_name会更pythonic和自然。

我没有找到任何 path在 Pandas 中实现的类型,有什么我遗漏的吗?

编辑

我发现最好一次做一次 astype(path)那么至少对于与 pathlib 的路径连接它被矢量化:
(
pd.DataFrame({'base_dir': ['dir_A', 'dir_B'], 'file_name': ['file_0', 'file_1']})
# this is where I would expect `astype({'base_dir': Path})`
.assign(**{col_name:lambda df: df[col_name].map(Path) for col_name in ["base_dir", "file_name"]})
.assign(full_path=lambda df: df.base_dir / df.file_name)
)

最佳答案

似乎最简单的方法是:

df.base_dir.map(Path) / df.file_name.map(Path)

它节省了对 lambda 函数的需求,但您仍然需要映射到“路径”。

或者,只需执行以下操作:
df.base_dir.str.cat(df.file_name, sep="/")

后者在 Windows 上不起作用(谁在乎,对吧?:) 但可能会运行得更快。

关于python - 用 Pandas 处理路径的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61475633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com