You need to enable JavaScript to run this app. 基于已有pandas DataFrame创建新列提取文件版本与销售ID
优惠活动
大模型
产品
解决方案
定价
更多

基于已有pandas DataFrame创建新列提取文件版本与销售ID

pandas实现S3路径字段提取方案

你可以用pandas内置的字符串处理方法实现需求,两种常用实现方式如下:

方式1:正则提取(推荐,适配固定文件名格式场景)

直接通过str.extract匹配你文件名中{sales_id}_{version}.snappy.parquet的固定格式,一步提取两个目标字段:

import pandas as pd

# 假设你的原DataFrame变量名为df
# 正则分组分别匹配sales_id和version
df[["sales_id", "version"]] = df["key"].str.extract(r"(\d+)_(\d+)\.snappy\.parquet")

# 可选:将两个字段转为整数类型
df["sales_id"] = df["sales_id"].astype(int)
df["version"] = df["version"].astype(int)

# 移除不需要的last_modified_time列,得到目标结构
df = df.drop(columns=["last_modified_time"])

方式2:字符串拆分(适配文件名后缀可变场景)

如果后续你的文件后缀可能变化,可以通过分层拆分路径、文件名实现字段提取:

# 提取最后一级路径的文件名
df["file_name"] = df["key"].str.split("/").str[-1]
# 去掉文件后缀后按下划线拆分得到两个目标字段
df[["sales_id", "version"]] = df["file_name"].str.rsplit(".", n=1).str[0].str.split("_", expand=True)

# 类型转换+清理冗余列操作和方式1一致
df["sales_id"] = df["sales_id"].astype(int)
df["version"] = df["version"].astype(int)
df = df.drop(columns=["file_name", "last_modified_time"])

两种方式运行后得到的df结构和你需要的目标结果完全一致。

内容的提问来源于stack exchange,提问作者Dcook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 09:48:03