pandas将单列逗号分隔字符串拆分为多列的向量化操作实现咨询
最优实现方案
使用str.split()的expand=True参数即可直接把拆分结果展开为DataFrame,一次性完成多列赋值,全程都是pandas原生向量化操作,性能远高于apply方案:
import pandas as pd # 测试数据 df = pd.DataFrame({"title":["Canada,Chris,Data Scientist", "Korea,Kim,Analyst", "HK,Lai,Scientist"], "R":[0.7, 0.2, 0.3]}) # 核心拆分代码 df[["country", "name", "job"]] = df["title"].str.split(",", expand=True)
如果数据存在title中包含多余逗号的情况,可以加n参数限制拆分次数,保证拆分后固定为3列,逻辑更稳妥:
df[["country", "name", "job"]] = df["title"].str.split(",", n=2, expand=True)
其他可选实现(性能略低于上述方案)
如果你需要单独生成某一列,也可以用str.get()获取拆分后列表对应位置的元素,同样属于向量化操作:
df["country"] = df["title"].str.split(",").str.get(0) df["name"] = df["title"].str.split(",").str.get(1) df["job"] = df["title"].str.split(",").str.get(2)
该方案需要对列做三次拆分,数据量较大时性能不如一次性拆分+expand的写法,仅适合需要单独处理某一列的场景。
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

