为什么对pandas DataFrame列使用apply函数后原数据没有变化?
问题根因
Pandas 的所有转换类方法默认都是不修改原对象,而是返回一个全新的Series或DataFrame对象。你调用df['NBA'].apply(transform)时,仅在终端输出了转换后的新Series结果,并没有将这个结果赋值回原DataFrame的对应列,所以查看原df时数据仍保持初始状态。
修复方案
只需要把apply的返回值赋值给原列即可生效:
df['NBA'] = df['NBA'].apply(transform)
额外优化建议
这类简单的字符串替换逻辑不需要自定义函数配合apply,直接使用pandas向量化操作不仅写法更简洁,处理大数据量时性能也会高很多:
# 更严谨的写法:先去除首尾空格再判断是否为空,避免多个空格的场景被遗漏 df['NBA'] = df['NBA'].where(df['NBA'].str.strip().str.len() > 0, None)
注:你给出的执行输出中替换结果为Missing Value,但你贴的transform函数返回的是None,如果你实际需要替换为Missing Value字符串,把上面代码里的None改成对应字符串即可
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

