Pandas中.str[0]的作用及字符串拆分索引疑问解答
为什么要用
.str[1]而非直接[1]? 咱们先拆解两个操作的本质:
- 执行
d['SALES_AREA'].str.split('-')后,得到的是一个Series对象,这个Series里的每一项都是一个列表(比如['MV', 'Schmidt Carsten'])。 - 直接用
[1]时,你是在对整个Series做索引,取的是这个Series的第2个元素(Python是0起始索引),也就是单个列表['MV', 'Schmidt Carsten']——这就是你拿到这个结果的原因。 - 而
.str[1]是借助Pandas的.str访问器实现的:.str是Pandas专门用来批量处理Series/Index中每个元素的工具,.str[1]会遍历Series里的每一个列表,对每个列表执行[1]索引,把每个列表的第2个元素提取出来,最终拼成一个新的Series,这就是你想要的正确结果。
Pandas中
.str[0]的作用 .str是Pandas的字符串访问器,核心是不用写循环,就能对Series/Index里的每一个元素做向量化操作:
- 如果元素是字符串,
.str[0]会取每个字符串的第1个字符; - 如果元素是列表(比如
str.split返回的结果),.str[0]会取每个列表的第1个元素; - 本质上,
.str[i]就是对Series里的每一个单独元素,执行元素[i]的操作,再把所有结果整合成新的Series。
顺带提一句,你要移除开头“MV-”的需求,其实有更简洁的写法:
- 用
str.replace精准匹配开头:d['SALES_AREA'].str.replace('^MV-', '', regex=True) - 或者用
str.lstrip(注意如果字符串开头有多个重复的M/V/-会被一起去掉,适合确定开头只有“MV-”的场景):d['SALES_AREA'].str.lstrip('MV-')
内容的提问来源于stack exchange,提问作者Anubhav Swaroop
相关产品推荐
相关产品推荐

