You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中拆分所有列字符串仅保留首值并解决NameError问题

错误原因
  • 语法错误:lambda x: i[0] for i in x.split("&")是非法语法,生成器表达式没有正确的闭合边界,Python解释器无法将x识别为lambda的入参,会作为全局变量检索,检索失败就抛出NameError: name 'x' is not defined
  • 逻辑错误:df.apply()默认按列迭代,传入lambda的参数x是整列的Series对象,而非单个单元格字符串,Series本身没有split()方法,即便语法修正也会触发属性错误。
正确实现方案

方案1:使用str.split分割取首元素

借助pandas的字符串访问器str对整列批量处理,性能更高:

import pandas as pd

# 示例数据构造
df = pd.DataFrame({'A': ['1&2', '3'], 'B': ['3', '5&6']})

# 所有列按&分割取第一个值
df = df.apply(lambda col: col.str.split('&').str[0])

# 可选:转换为数值类型
df = df.astype(int)

方案2:正则替换

直接用正则匹配删除&及之后的所有内容,写法更简洁:

df = df.replace(r'&.*', '', regex=True).astype(int)

两种方案运行后都可以得到你需要的输出结果。

内容的提问来源于stack exchange,提问作者user9364978

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:54:03