如何基于Pandas DataFrame中某列的子串创建新列?
解决Pandas按子串拆分列生成新列的问题
没问题,针对你这个需求,用Pandas的str.split()方法就能快速搞定!咱们一步步来操作:
1. 先还原你的原始数据(方便复现验证)
首先把你提供的DataFrame构造出来,代码如下:
import pandas as pd data = { 'Date': ['02-01-08', '03-01-08', '04-01-08', '05-01-08', '06-01-08'], 'variable': ['Australia - Sydney - A', 'Australia - Sydney - A', 'Australia - Sydney - A', 'Canada - Toronto - B', 'Canada - Toronto - B'] } df = pd.DataFrame(data)
2. 核心拆分代码
观察你的variable列,是用-(空格+减号+空格)作为分隔符的,直接用str.split()拆分并展开成新列即可:
# 拆分variable列,展开为3个新列,直接命名为want1、want2、want3 df[['want1', 'want2', 'want3']] = df['variable'].str.split(' - ', expand=True)
3. 验证结果
运行上面的代码后,你的DataFrame就会生成完全符合预期的目标列:
Date variable want1 want2 want3 0 02-01-08 Australia - Sydney - A Australia Sydney A 1 03-01-08 Australia - Sydney - A Australia Sydney A 2 04-01-08 Australia - Sydney - A Australia Sydney A 3 05-01-08 Canada - Toronto - B Canada Toronto B 4 06-01-08 Canada - Toronto - B Canada Toronto B
补充小提示
- 如果你的
variable列分隔符不统一(比如有的是单空格、有的是-),可以先用str.replace()统一分隔符再拆分; expand=True是核心参数,它会把拆分后的字符串列表转换成DataFrame,这样就能直接赋值给新列;- 如果拆分后列数不确定,可以先不指定列名,后续再根据实际结果调整列名。
内容的提问来源于stack exchange,提问作者duckman
相关产品推荐
相关产品推荐

