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

如何在不遍历DataFrame的情况下移除单元格列表中的指定字符串值

解决方法

你之前的写法存在几个明显问题:

  • 用'nan'|'NaT'是错误的,|是位运算符,不能用来同时匹配多个目标字符串
  • list.remove()只会删除列表中第一个匹配项,而且如果列表里没有目标值会直接抛出报错
  • remove()是原地修改列表,返回值为None,会导致你的单元格变成空值,而非处理后的有效列表

正确的做法是用列表推导式过滤掉不需要的字符串,再结合Pandas的applymap()方法批量处理每个单元格,无需自己手动写循环:

  1. 先定义一个过滤函数:
def filter_unwanted_items(lst):
    # 过滤掉字符串格式的'nan'和'NaT'
    return [item for item in lst if item not in {'nan', 'NaT'}]
  1. 用applymap()处理整个DataFrame:
import pandas as pd

# 示例DataFrame(可替换成你的实际数据)
df = pd.DataFrame({
    'col1': [['a', 'nan', 'b'], ['NaT', 'c'], ['d']],
    'col2': [['NaT'], ['e', 'nan'], ['f', 'g']]
})

# 批量处理所有单元格中的列表
df = df.applymap(filter_unwanted_items)

处理后每个单元格里的列表都会自动去掉'nan'和'NaT',无论原列表是否包含这些值都不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:12:01