首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从这两个列表中的任何一个创建df

从这两个列表中的任何一个创建df
EN

Stack Overflow用户
提问于 2022-10-17 17:35:03
回答 1查看 33关注 0票数 0

我有下面的df

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

输出:

代码语言:javascript
复制
  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

和下列清单:

代码语言:javascript
复制
base_tokens = ['BTC', 'WETH', 'SOL']
other_tokens = ['sBTC', 'sWETH', 'sSOL']

我只想创建一个new_df,其值位于df中的'all_tokens'列中,而也不在列表中。

预期产出:

代码语言:javascript
复制
  new_tokens
0       AVAX
1        LTC
2        ETC

我试过:

代码语言:javascript
复制
new_df = pd.DataFrame({'new_tokens': df['all_tokens'].loc[(~df['all_tokens'].isin(base_tokens)) & (~df['all_tokens'].isin(other_tokens))]})

没有成功。我的结果是一个包含两个列表中所有标记的new_df

EN

回答 1

Stack Overflow用户

发布于 2022-10-17 17:39:51

试试这个:

代码语言:javascript
复制
# Combine two list and convert them to set 
set_all = set(base_tokens + other_tokens)

res = df.loc[~df['all_tokens'].isin(set_all), 'all_tokens'].to_frame().reset_index(drop=True)

print(res)

输出:

代码语言:javascript
复制
  all_tokens
0       AVAX
1        LTC
2        ETC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74101091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档