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

如何用向量化方法提取Pandas字符串列按_分割的最后部分?

解决Pandas DataFrame提取字符串分割后最后部分的问题

你的代码错误在于对str.split()返回的Series处理不当,直接嵌套索引的方式没有正确访问每行分割后的列表元素,导致结果错位。

以下是两种正确的向量化实现方式:

方法1:提取分割后的最后一部分(通用场景,支持多个下划线)

如果字符串可能包含多个下划线,需要取最后一段内容,用str[-1]访问每个分割后的列表的最后元素:

import pandas as pd

df = pd.DataFrame()
df['Var1'] = ["test1_test2","test3_test4", "a_b_c_d"]
df['Var2'] = df['Var1'].str.split('_').str[-1]

执行后结果:

Var1 Var2
0  test1_test2 test2
1  test3_test4 test4
2    a_b_c_d    d

方法2:提取分割后的第二部分(仅适用于固定两个部分的字符串)

如果确定每个字符串只有一个下划线,直接用str[1]取第二个元素:

df['Var2'] = df['Var1'].str.split('_').str[1]

错误原因说明

df['Var1'].str.split('_')返回的是一个包含列表的Series,每个元素对应一行分割后的结果。你的写法[[df['Var1'].str.split('_')][0]][0]等价于直接取这个Series,没有通过.str索引器逐个访问列表元素,导致Pandas错误解析数据,出现错位结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:21