如何在Python Pandas中仅用.apply修改DataFrame指定列的空字符串
解决DataFrame指定列空字符串替换问题
不用循环的apply实现方式
你之前直接用apply失败,大概率是没针对列维度处理或者函数逻辑有误。正确的写法是先选中目标列,再对每一列应用替换逻辑:
# 选中指定列后,用apply按列处理 cols = ['a', 'b', 'c', 'd', 'e'] df[cols] = df[cols].apply(lambda col: col.replace('', 'tmp'))
这里apply默认按列(axis=0)遍历,将每一列的Series对象传入lambda函数,用Series.replace把空字符串替换为'tmp',最后赋值回原DataFrame的对应列即可。
更高效的替代方案(无需apply)
其实apply并非最优选择,以下两种方法更简洁高效:
- 直接用
replace批量替换
cols = ['a', 'b', 'c', 'd', 'e'] df[cols] = df[cols].replace('', 'tmp')
- 用
mask精准替换匹配值
cols = ['a', 'b', 'c', 'd', 'e'] df[cols] = df[cols].mask(df[cols] == '', 'tmp')
之前apply失败的常见原因
- 未先选中目标列,直接对整个DataFrame调用
apply,导致无关列也被处理 - 错误设置
axis=1(按行处理),但你的需求是处理列内的空字符串,行维度的处理逻辑不匹配
内容的提问来源于stack exchange,提问作者murilo xavier de souza
相关产品推荐
相关产品推荐

