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

使用任何列表值筛选数据[duplicate]

梅安平
2023-03-14

我有一个数据框:

df
0       PL
1       PL
2       PL
3       IT
4       IT
        ..
4670    DE
4671    NO
4672    MT
4673    FI
4674    XX
Name: country_code, Length: 4675, dtype: object

我通过以下方式按德国国家标签“DE”过滤此内容:

df = df[df.apply(lambda x: 'DE' in x)]

如果我想筛选更多的国家,我必须通过以下方式手动添加它们:。应用(lambda x:'DE'in x或'GB'in x)。然而,我想创建一个国家列表,并自动生成此声明。

大概是这样的:

countries = ['DE', 'GB', 'IT']
df = df[df.apply(lambda x: any_item_in_countries_list in x)]

我想我可以过滤df 3次,然后通过concat()将这些片段合并回来,但是有没有更通用的函数来实现这一点?

共有2个答案

司马宏茂
2023-03-14

如果你有列名,你可以试试这个

countries = ['DE', 'GB', 'IT']
df[df['country_code'].isin(countries)]
须景胜
2023-03-14

您可以使用.isin()

df[df['country_code'].isin(['DE', 'GB', 'IT'])]

性能比较:

import timeit
import pandas as pd
df = pd.DataFrame({'country_code': ['DE', 'GB', 'IT', 'MT', 'FI', 'XX'] * 1000})

%timeit df[df['country_code'].isin(['DE', 'GB', 'IT'])]
409 µs ± 19 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit df['country_code'].apply(lambda x: x in ['DE', 'AT', 'GB'])
1.35 ms ± 474 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
 类似资料:
  • 我需要过滤一个列表

  • 我正在尝试根据第二个列表中的值筛选对象列表。 现在我想移除列表A的项目,该项目的ID在列表B中可用。 null null 感谢任何帮助

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

  • 我有一个,如下所示: 我试图创建一个新的数据帧的基础上过滤前一个数据帧的行匹配的值列表。我已经尝试了下一段代码: 但是我犯了一个错误。我期待着下一个结果: 我正在寻找一种灵活的解决方案,它允许根据匹配列表中比示例中所示元素更多的元素进行筛选。

  • 我正在使用谷歌表单的过滤功能,但无法按我想要的方式使用,已经3天了。。。 基本上,我有第1页,有一列“电子邮件”和一列“潜在客户ID”。表2具有相同的“潜在客户ID”,但已过滤。含义,第1页,其“顺序为1,2,3,4,5…”。。。第二张不是,像是2,4,5,23,41。。。我想在表1中找到正确的电子邮件地址,该地址在两个表中具有相同的Lead ID。我使用了Filter函数,它工作得非常好,因为它

  • 本文向大家介绍yii2使用gridView实现下拉列表筛选数据,包括了yii2使用gridView实现下拉列表筛选数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了yii2 gridView下拉列表筛选数据的具体代码,供大家参考,具体内容如下 view: model: 效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。