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

如何筛选DataFrame中不在两个指定列表内的Token数据?

筛选DataFrame中不在指定列表的元素

原始数据

给定的DataFrame:

import pandas as pd

df = pd.DataFrame({'all_tokens': ['BTC', 'WETH', 'SOL', 'sBTC', 'sWETH', 'sSOL', 'AVAX', 'LTC', 'ETC'],
                   'amount': [10, 20, 30, 40, 50, 60, 70, 80, 90]})

原始数据输出:

all_tokens  amount
0        BTC      10
1       WETH      20
2        SOL      30
3       sBTC      40
4      sWETH      50
5       sSOL      60
6       AVAX      70
7        LTC      80
8        ETC      90

需要排除的两个token列表:

base_tokens = ['BTC', 'WETH', 'SOL']
other_tokens = ['sBTC', 'sWETH', 'sSOL']

预期输出的new_df:

new_tokens
0       AVAX
1        LTC
2        ETC

问题分析

尝试的代码未得到正确结果,反而包含了所有需要排除的token:

new_df = pd.DataFrame({'new_tokens': df['all_tokens'].loc[(~df['all_tokens'].isin(base_tokens)) & (~df['all_tokens'].isin(other_tokens))]})

注:代码中的&是HTML转义字符,实际Python中应使用&,但即便修正后,这种分两次判断的写法不仅冗余,也容易因逻辑细节出错。

正确解法

将两个需要排除的列表合并,通过一次isin判断取反,就能高效筛选出目标数据:

# 合并需要排除的token列表
exclude_tokens = base_tokens + other_tokens

# 筛选不在排除列表中的token,构造新DataFrame并重置索引
new_df = pd.DataFrame({
    'new_tokens': df.loc[~df['all_tokens'].isin(exclude_tokens), 'all_tokens']
}).reset_index(drop=True)

运行后即可得到与预期完全一致的结果。

内容的提问来源于stack exchange,提问作者Luiz Scheuer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:40:20