Pandas中如何索引DataFrame列值并拆分生成新列
Pandas拆分列生成新列实现方案
针对按固定规则拆分某列值、生成多列新字段的需求,优先使用Pandas内置的字符串处理方法实现,性能和可读性都更好。
方法1:按分隔符拆分(适配示例场景)
示例中Data列统一用-作为两部分内容的分隔符,直接用str.split即可一步完成拆分:
import pandas as pd # 构造示例原始数据 df = pd.DataFrame({ 'Data': ['0010-AAAA', '0010-BBBB', '0010-CCCC', '0011-DDDD', '0011-EEEE'] }) # 核心拆分逻辑:按'-'拆分,拆分结果直接赋值给两个新列 df[['col_2', 'col_3']] = df['Data'].str.split('-', expand=True)
参数说明:
expand=True:会把拆分后的列表结果展开为DataFrame格式,列数和拆分出的片段数一致,可直接赋值给对应新列- 如果列内容里存在多个相同分隔符,可加
n=1参数控制仅按第一个分隔符拆分,避免过度拆分,写法为str.split('-', n=1, expand=True)
方法2:按固定字符位置截取
如果字段长度固定、拆分位置是固定偏移量,也可以直接用字符串索引截取:
# 前4位为col_2,第6位(索引从0开始,跳过中间的'-')到末尾为col_3 df['col_2'] = df['Data'].str[:4] df['col_3'] = df['Data'].str[5:]
运行结果
两种方法执行后,得到的DataFrame完全符合预期:
Data col_2 col_3 0 0010-AAAA 0010 AAAA 1 0010-BBBB 0010 BBBB 2 0010-CCCC 0010 CCCC 3 0011-DDDD 0011 DDDD 4 0011-EEEE 0011 EEEE
内容的提问来源于stack exchange,提问作者Roxanne
相关产品推荐
相关产品推荐

