如何从 Pandas 数据框中筛选包含字符串模式的行[重复]

2025-03-05 09:14:00
admin
原创
89
摘要:问题描述:假设我们在 Python Pandas 中有一个如下所示的数据框:df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']}) 或者,以表格形式:ids vals aball ...

问题描述:

假设我们在 Python Pandas 中有一个如下所示的数据框:

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})

或者,以表格形式:

ids    vals
aball   1
bball   2
cnut    3
fball   4

如何筛选包含关键字“ball”的行?例如,输出应为:

ids    vals
aball   1
bball   2
fball   4

解决方案 1:

In [3]: df[df['ids'].str.contains("ball")]
Out[3]:
     ids  vals
0  aball     1
1  bball     2
3  fball     4

解决方案 2:

df[df['ids'].str.contains('ball', na = False)] # valid for (at least) pandas version 0.17.1

逐步解释(从内到外):

  • df['ids']选择ids数据框的列(从技术上讲,该对象df['ids']属于类型pandas.Series

  • df['ids'].str允许我们将矢量化字符串方法(例如lowercontains)应用于 Series

  • df['ids'].str.contains('ball')检查系列中的每个元素,以确定元素值是否包含字符串“ball”作为子字符串。结果是一个布尔值系列,表示TrueFalse表明“ball”子字符串的存在。

  • df[df['ids'].str.contains('ball')]将布尔“掩码”应用于数据框并返回包含适当记录的视图。

  • na = False从考虑中删除 NA / NaN 值;否则可能会返回 ValueError。

解决方案 3:

>>> mask = df['ids'].str.contains('ball')    
>>> mask
0     True
1     True
2    False
3     True
Name: ids, dtype: bool

>>> df[mask]
     ids  vals
0  aball     1
1  bball     2
3  fball     4

解决方案 4:

如果您想将过滤的列设置为新索引,您也可以考虑使用.filter;如果您想将其保留为单独的列,那么这str.contains就是可行的方法。

假设你有

df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'aball', u'bball', u'cnut', u'fball', 'ballxyz']})

       ids  vals
0    aball     1
1    bball     2
2     cnut     3
3    fball     4
4  ballxyz     5

并且您的计划是过滤所有包含idsball设置ids为新索引的行,您可以执行

df.set_index('ids').filter(like='ball', axis=0)

给出

         vals
ids          
aball       1
bball       2
fball       4
ballxyz     5

filter也允许您传递正则表达式,因此您也可以仅过滤列条目以 结尾的行ball。在这种情况下,您可以使用

df.set_index('ids').filter(regex='ball$', axis=0)

       vals
ids        
aball     1
bball     2
fball     4

ballxyz请注意,现在不包括带有的条目,因为它以它开头ball但不以它结尾。

如果你想获得以 开头的所有条目,ball你可以简单使用

df.set_index('ids').filter(regex='^ball', axis=0)

屈服

         vals
ids          
ballxyz     5

列也一样;您只需更改部分即可axis=0。如果您根据列进行过滤,则结果为axis=1

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   4008  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2751  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   86  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   97  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   85  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用