Python使用split()函数从DataFrame列提取值生成新列问题
问题解答
结论
不需要使用apply函数即可实现该需求,推荐使用pandas内置的矢量化字符串操作,性能远优于apply逐行遍历方案。
实现代码
核心代码仅需一行:
# 按空格分割后取最后一个元素,生成COL-B列 df['COL-B'] = df['COL-A'].str.split().str[-1]
如果需要COL-B为数值类型,可以额外做类型转换:
df['COL-B'] = df['COL-A'].str.split().str[-1].astype(int)
方法说明
df['COL-A'].str.split():对COL-A列的所有字符串按空格进行批量分割,返回每个分割结果组成的列表型Series.str[-1]:批量取出每个列表的最后一个元素,得到目标值
为什么不推荐用apply?
apply实现的写法如下:
df['COL-B'] = df['COL-A'].apply(lambda x: x.split()[-1])
该写法本质是逐行调用Python自定义函数,当数据量超过1万行时,执行效率会比上述矢量化方案低几倍到几十倍,无特殊需求优先选择内置矢量化方法即可。
内容的提问来源于stack exchange,提问作者Harry Jones
相关产品推荐
相关产品推荐

