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

如何从DataFrame的列表中移除所有正负数值保留非数值元素

实现方案

核心逻辑是对DataFrame中每个存储列表的单元格做元素过滤,剔除所有数值类型元素(包含正负数、0,覆盖整数、浮点数类型),仅保留非数值内容。

步骤1:导入依赖库、读取数据

import pandas as pd
import numbers

# 替换为你本地的similarity.csv文件实际存储路径
df = pd.read_csv("similarity.csv")

步骤2:定义列表过滤函数

通过类型判断筛掉所有数值类元素:

def filter_num_from_list(input_list):
    # 仅保留非数值类型的元素
    return [elem for elem in input_list if not isinstance(elem, numbers.Number)]

用给出的示例测试该函数:

  • 输入:[0, 'hi', 'hello', 'okay', -3]
  • 输出:['hi', 'hello', 'okay'],完全匹配预期结果。

步骤3:批量处理DataFrame的两列列表数据

将过滤函数应用到需要处理的两个存储列表的列上即可,注意把代码里的列名替换成数据集里的实际列名:

# 替换为数据集里实际的两个列表列名
list_col_1 = "列名1"
list_col_2 = "列名2"

df[list_col_1] = df[list_col_1].apply(filter_num_from_list)
df[list_col_2] = df[list_col_2].apply(filter_num_from_list)

特殊场景适配

如果列表里存在字符串格式存储的数值(比如'0'、'-2.5'这类内容),可以使用带异常捕获的过滤函数版本,把这类伪装成字符串的数值也一并剔除:

def filter_num_from_list(input_list):
    result = []
    for elem in input_list:
        # 跳过原生数值类型
        if isinstance(elem, numbers.Number):
            continue
        # 尝试将字符串转为数值,转换成功说明是数值类内容,跳过
        try:
            float(elem)
            continue
        except (ValueError, TypeError):
            result.append(elem)
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 18:27:41