如何将Pandas中长度为3的字符串列拆分为3个字符列?
解决Pandas Series逐字符拆分并生成指定列的问题
针对你需要将字符串型Series逐字符拆分为3列、处理NaN行的需求,这里提供两种高效的实现方案:
方案一:使用str.extract(推荐,适合固定长度字符串)
利用正则表达式的(.)匹配单个字符,直接提取3个字符为3列,代码更简洁高效,尤其适配你94万行的大数据量:
import pandas as pd # 假设你的Series对象名为s # s = pd.read_csv(...)['score'] # 实际场景中读取数据的方式 # 提取每个字符为单独列,并重命名 df_result = s.str.extract('(.)(.)(.)') df_result.columns = ['score_0', 'score_1', 'score_2'] # 将原Series中的NaN行转换为三个空值 df_result = df_result.fillna('')
方案二:使用str.split
通过设置空字符串为分隔符实现逐字符拆分,需额外处理拆分后产生的首尾空列:
import pandas as pd # 逐字符拆分并展开为DataFrame,取中间3列(跳过首尾空串) df_result = s.str.split('', expand=True).iloc[:, 1:4] df_result.columns = ['score_0', 'score_1', 'score_2'] # 转换NaN行为空值 df_result = df_result.fillna('')
关键说明
str.extract('(.)(.)(.)'):每个(.)正则分组匹配一个字符,直接生成3列,无需处理多余空值,完美适配你固定3位字符的场景。fillna(''):将原Series中NaN对应的行,统一替换为三个空字符串,满足你对空值行的要求。
内容的提问来源于stack exchange,提问作者Gooby
相关产品推荐
相关产品推荐

