首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dataframe子集中的字符串索引- pandas

dataframe子集中的字符串索引- pandas
EN

Stack Overflow用户
提问于 2019-10-30 03:02:27
回答 2查看 207关注 0票数 1

我正在尝试基于列表中的值创建pandas数据帧的子集。但是,我需要包含字符串索引。我将通过一个示例进行演示:

这是我的数据框架:

代码语言:javascript
复制
df = pd.DataFrame({'A' : ['1-2', '2', '3', '3-8', '4']})

下面是它看起来的样子:

代码语言:javascript
复制
A
0    1-2
1      2
2      3
3    3-8
4      4

我有一个值列表,我想用它从我的数据帧中选择行。

代码语言:javascript
复制
list1 = ['2', '3']

我可以使用.isin()函数通过我的列表项从我的数据帧中选择行。

代码语言:javascript
复制
subset = df[df['A'].isin(list1)]
print(subset)

   A
1  2
2  3

但是,我想要包含'2‘或'3’的任何值。这是我想要的输出:

代码语言:javascript
复制
   A
1  1-2
2  2
3  3
4  3-8

我可以在.isin()函数中使用字符串索引吗?我正在努力想出另一个变通办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-30 03:07:48

使用isinany检查str.split

代码语言:javascript
复制
Newdf=df[df.A.str.split('-',expand=True).isin(['2','3']).any(1)].copy()
Out[189]: 
     A
0  1-2
1    2
2    3
3  3-8
票数 3
EN

Stack Overflow用户

发布于 2019-10-30 03:18:57

您可以尝试使用正则表达式:

代码语言:javascript
复制
import re

pattern=re.compile(".*(("+(")|(").join(list1)+"))")

print(df.loc[df['A'].apply(lambda x: True if pattern.match(x) else False)])

输出:

代码语言:javascript
复制
A
0  1-2
1    2
2    3
3  3-8

[Program finished]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58613843

复制
相关文章

相似问题

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