如何将Pandas DataFrame单列中逗号分隔值拆分提取为新列?
Pandas逗号分隔单列拆分多列实现方案
你之前调用.split()失败的核心原因是直接对DataFrame的Series列对象调用了Python原生的字符串split方法,pandas中要处理列内的字符串操作,需要先通过.str访问器调用专属的字符串处理方法。
最优实现方式如下:
核心实现代码
import pandas as pd # 构造示例数据,实际使用时替换为你自己的DataFrame即可 df = pd.DataFrame({ 'column_1': ['1,2,0.3', '2,3,0.4'] }) # 拆分column_1列,直接生成3个新列并转换为数值类型 df[['column_2', 'column_3', 'column_4']] = df['column_1'].str.split(',', expand=True).astype(float)
执行后即可得到你需要的输出结果。
适配不确定拆分列数的场景
如果提前不知道column_1拆分后会生成多少列,可以用下面的通用写法:
# 先拆分得到临时的拆分结果表 split_cols = df['column_1'].str.split(',', expand=True) # 自动生成新列的列名 split_cols.columns = [f'column_{i+2}' for i in split_cols.columns] # 把拆分后的列合并到原表中 df = pd.concat([df, split_cols.astype(float)], axis=1)
常见参数说明
split(',', expand=True):expand参数设为True会直接把拆分后的列表展开成多列DataFrame,默认False只会返回每个元素是列表的Seriesastype(float):拆分出来的列默认是字符串类型,按需转换为数值/其他类型即可- 如果存在空值、异常格式的行,可以添加
na_action='ignore'参数避免报错:df['column_1'].str.split(',', expand=True, na_action='ignore')
内容的提问来源于stack exchange,提问作者Katty_one
相关产品推荐
相关产品推荐

