当前位置: 首页 > 知识库问答 >
问题:

筛选数据框匹配列值与列表值在python[重复]

尉迟子民
2023-03-14

我有一个数据帧,如下所示:

import numpy as np
import pandas as pd
import string
import random

random.seed(42)

df = pd.DataFrame({'col1': list(string.ascii_lowercase)[:11],
                   'col2':[random.randint(1,100) for x in range(11)]})

df

   col1 col2
0   a   64
1   b   3
2   c   28
3   d   23
4   e   74
5   f   68
6   g   90
7   h   9
8   i   43
9   j   3
10  k   22

我试图创建一个新的数据帧的基础上过滤前一个数据帧的行匹配的值列表。我已经尝试了下一段代码:

df_filt = df[df['col1'] in ['a','c','h']]

但是我犯了一个错误。我期待着下一个结果:

df_filt

   col1 col2
0   a   64
1   c   28
2   h   9

我正在寻找一种灵活的解决方案,它允许根据匹配列表中比示例中所示元素更多的元素进行筛选。

共有2个答案

汪典
2023-03-14

使用isin

df_filt = df[df.col1.isin(['a','c','h'])]
汪和悌
2023-03-14

您可以使用熊猫。Series.isin用于复合in-检查。

输入数据帧:

>>> df
>>> 
   col1  col2
0     a    64
1     b     3
2     c    28
3     d    23
4     e    74
5     f    68
6     g    90
7     h     9
8     i    43
9     j     3
10    k    22

输出数据帧:

>>> df[df['col1'].isin(['a', 'c', 'h'])]
>>> 
  col1  col2
0    a    64
2    c    28
7    h     9
 类似资料:
  • 这应该非常容易,但我无法让它工作。 我想根据两个或多个值筛选数据集。 这是否必须是一个或声明?我可以在SQL中使用?

  • 我有一个Python pandas DataFrame: 我想把一些股票的所有行放在一起,比如。这意味着我想要这样的语法: 既然熊猫不接受上述命令,如何达到目标?

  • 有一个数据帧: 以及熊猫系列: 如何创建包含c1在list1中的行的新数据帧。 输出:

  • 代码如下: 主要切换筛选功能,列表列操作点击触发弹框,数据对应不上,列表是封装好的,代码如下 // 获取流程数据 this.groupId是要传的id 现在是新写页面,主要把对应的格式传给原来封装好的格式就可以展示在页面,但是现在通过点击下拉框筛选功能,点击行的操作 一直传同一个 groupId,请问大佬们怎么规避这个问题呢 期望拿到的id是 是不同的

  • 我有一个数据框: 我通过以下方式按德国国家标签“DE”过滤此内容: 如果我想筛选更多的国家,我必须通过以下方式手动添加它们:。然而,我想创建一个国家列表,并自动生成此声明。 大概是这样的: 我想我可以过滤df 3次,然后通过将这些片段合并回来,但是有没有更通用的函数来实现这一点?

  • 我有一个表格结构 如何使用条件?我尝试使用这个,但结果是