You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中移除字符串冒号前的所有内容

批量提取DataFrame中key:value格式字符串冒号后内容的实现方案

给定的样例DataFrame中,第0列为无冒号的纯数值列,其余列均为key:value格式字符串,处理时可跳过无需改动的列,仅对目标列执行提取操作。

高性能向量化处理(推荐大表使用)

该方案基于pandas内置字符串向量化操作实现,处理速度远高于逐行循环逻辑,适合数据量较大的场景:

# 定位所有包含key:value结构的目标列,排除无冒号的第0列
target_cols = df.columns[1:]
# 按第一个冒号分割字符串,提取冒号后的内容
df[target_cols] = df[target_cols].apply(
    lambda col: col.str.split(pat=':', n=1).str[1]
)
# 可选:将提取得到的字符串转换为数值类型,支撑后续计算逻辑
df[target_cols] = df[target_cols].astype('float64')

注:参数n=1表示仅在字符串中第一个冒号位置执行分割,避免后续存储的数值内容如果包含冒号时被误切割,提升逻辑鲁棒性。

全表自适应处理(适合列结构不固定的场景)

如果无需手动指定目标列,可对整个DataFrame做自适应判断,自动跳过无冒号的单元格:

# 逐单元格判断:如果是带冒号的字符串,就提取冒号后内容,否则保留原值
df = df.applymap(
    lambda cell: cell.split(':', 1)[1] if isinstance(cell, str) and ':' in cell else cell
)
# 可选:统一将全表内容转换为数值类型
df = df.astype('float64')

以上两种方法执行完成后,样例中原值1:-0.860107会被替换为-0.860107,6:0.333333会被替换为0.333333,完全匹配仅保留冒号后数值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 10:06:02