如何将Pandas DataFrame指定列中所有字符串替换为空字符串
解决方案
直接使用pandas向量化操作实现需求,比原有循环写法性能更高,不会删除行和列,完全符合schema要求:
def clear_aborted_reason(): # 筛选Aborted Reason列中值为字符串类型的行,将对应位置的值替换为空字符串 df.loc[df['Aborted Reason'].apply(lambda x: isinstance(x, str)), 'Aborted Reason'] = ''
逻辑说明
- 通过
apply(lambda x: isinstance(x, str))逐行判断Aborted Reason列的单元格值是否为字符串类型,和你原有代码的判断逻辑完全一致 - 仅将符合条件的单元格赋值为空字符串
'',其余非字符串类型的值(如空值、NaN等)保持不变,也不会修改其他列的内容 - 全程不会删除
Aborted Reason列,完全满足第三方系统的schema要求
替代方案(基于replace实现)
你之前用df.replace没有得到预期结果,是因为replace默认执行全值匹配,只有单元格值和你传入的查找值完全一致才会替换。如果要匹配所有非空字符串,可以开启正则模式:
df['Aborted Reason'] = df['Aborted Reason'].replace(r'^.+$', '', regex=True)
该写法会将所有长度≥1的字符串替换为空,效果和上述方案一致。
处理后效果示例
处理完成后你的示例数据会变成如下格式:
| Aborted Reason | Job status |
|---|---|
| Aborted | |
| Completed | |
| Aborted | |
| Aborted | |
| Aborted | |
| Aborted |
内容的提问来源于stack exchange,提问作者Mizanur Choudhury
相关产品推荐
相关产品推荐

