如何从DataFrame列提取各次'/'后4个字符及排查代码错误
Pandas字符串提取问题解决
原始问题
需要从DataFrame的某一列中,提取'/'第一次、第二次、第三次等每一次出现位置之后的4个字符。
你代码的报错原因

你大概率是对Series使用str.split()后直接用整数索引取值,例如写了类似df['列名'].str.split('/')[1]的代码:这行代码实际是取整个Series对象的第1行数据,而非每行分割后的第1个片段,所以会出现索引越界或结果不符合预期的报错。
如果要取每行分割后的第N个元素,需要追加.str[N]对每个子元素单独做索引。
可运行实现代码
场景1:提取指定第N次/后的4个字符
import pandas as pd # 示例DataFrame,替换为你自己的数据集即可 df = pd.DataFrame({ '待处理列': ['xxx/aaaa/yyy/bbbb/zzz', 'test/1111/2222/demo'] }) # N对应要提取的次数:0=第一次,1=第二次,以此类推 N = 0 df[f'第{N+1}次提取结果'] = df['待处理列'].str.split('/').str[N+1].str[:4]
场景2:提取所有/后的4个字符,每行结果存为列表
df['全量提取结果'] = df['待处理列'].str.split('/').apply( lambda x: [item[:4] for item in x[1:]] )
内容的提问来源于stack exchange,提问作者Salim
相关产品推荐
相关产品推荐

