如何从数据帧中筛选包含字符串模式的行

2024-04-26 19:16:00 发布

您现在位置:Python中文网/ 问答频道 /正文

假设Python中有一个如下所示的数据帧:

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

Tags: 数据idsdataframedf关键字形式表格pd
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
In [3]: df[df['ids'].str.contains("ball")]
Out[3]:
     ids  vals
0  aball     1
1  bball     2
3  fball     4
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)应用于序列
  • df['ids'].str.contains('ball')检查序列中的每个元素,以确定元素值是否将字符串“ball”作为子字符串。结果是一系列布尔值,表示TrueFalse关于“ball”子串的存在
  • df[df['ids'].str.contains('ball')]将布尔“掩码”应用于数据帧,并返回包含适当记录的视图
  • na = False从考虑中删除NA/NaN值;否则,可能会返回ValueError

相关问题 更多 >