首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Pandas DataFrame列中字符串列表中的所有行-此模式具有匹配组

获取Pandas DataFrame列中字符串列表中的所有行-此模式具有匹配组
EN

Stack Overflow用户
提问于 2021-07-14 21:23:13
回答 2查看 112关注 0票数 0

考虑一下代码

将熊猫作为pd导入

代码语言:javascript
运行
复制
# dfs
df_sample = pd.read_csv('...........')
array = ['' , '' , '' ....]

pattern = '|'.join(array)
# get all the rows
print(df_sample.COLUMN_NAME_XXX.str.contains(pattern))

我如何才能获得列的内容,而不是目前的TRUE/FALSE?

因为我一直收到这样的信息:

代码语言:javascript
运行
复制
manipulations.py:17: UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
  print(df_sample.COLUMN_NAME_XXX.str.contains(pattern))
0        False
1         True
2        False
3          NaN
4          NaN
         ...  
10942    False
10943      NaN
10944      NaN
10945      NaN
10946      NaN
Name: COLUMN_NAME_XXX, Length: 568743243, dtype: object
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-14 21:47:07

通过fillna()尝试

代码语言:javascript
运行
复制
m=df_sample.COLUMN_NAME_XXX.str.contains(pattern).fillna(False)
#Finally:
out=df[m]
#OR
out=df.loc[m]

现在,如果您打印out,您将得到过滤后的数据帧

票数 0
EN

Stack Overflow用户

发布于 2021-07-14 21:35:41

您应该能够将该逻辑数组直接传递回数据帧切片运算符,例如:

代码语言:javascript
运行
复制
df_sample[df_sample.COLUMN_NAME_XXX.str.contains(pattern)]

它应该返回满足方括号内的条件的所有行。可以通过将条件设置为以下格式进行链接:

代码语言:javascript
运行
复制
[(condition1) | (condition2)]  #OR
[(condition1) & (condition2)]  #AND

它似乎会自动将值映射为False,但如果不是这样,您可以通过添加.fillna( NaN =False)将其作为另一个步骤添加到布尔数据帧中:

代码语言:javascript
运行
复制
df_sample[df_sample.COLUMN_NAME_XXX.str.contains(pattern).fillna(value = False)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68378957

复制
相关文章

相似问题

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