首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python中,有任何方法可以从dataframe中搜索模式并提取其对应值吗?

在python中,有任何方法可以从dataframe中搜索模式并提取其对应值吗?
EN

Stack Overflow用户
提问于 2016-12-12 06:56:56
回答 2查看 61关注 0票数 1

我有一个像这样的数据仓库。

代码语言:javascript
代码运行次数:0
运行
复制
     Area of Power Cons.           Device Name  2016-09-02   2016-09-03  
0   01.11KVA VCB-I South  SJ 11 South Zone Con    32328.19     33157.12   
1   02.11KVA VCB-II Sout  SJ 11 South Zone Con    43879.94     45152.77   
2   03.11 KVA VCB-I Nort  SJ 11 North Zone Con    30132.74     29507.58   
3   04.11 KVA VCB-II Nor  SJ 11 North Zone Con    38632.45 -16448377.89   
4   05.MAIN INCOMER-I So  SJ 11 South Zone Con    31509.76     32313.60   
5   06.MAIN INCOMER-II S  SJ 11 South Zone Con    42617.22     43841.66   
6   07.MAIN INCOMER-I No  SJ 11 North Zone Con    29284.61     28673.92   
7   08.MAIN INCOMER II N  SJ 11 North Zone Con    37391.87     36786.43   
8     22.BLOW ROOM South  SJ 11 South Zone Con     1909.47      1908.40   
9     23.BLOW ROOM North  SJ 11 North Zone Con     1437.14      1369.04   
10      24.CARDING South  SJ 11 South Zone Con     3962.26      3989.94   
11      25.CARDING-North  SJ 11 North Zone Con     3970.63      3706.69   
12   26.PREPRATORY-South  SJ 11 South Zone Con     2456.72      2576.88   
13   27.PREPRATORY-North  SJ 11 North Zone Con     2372.61      2376.38   
14     28.RING FRAME 1-5  SJ 11 South Zone Con     7384.83      7595.06   
15    29.RING FRAME 6-10  SJ 11 South Zone Con     7111.55      7313.15   
16   30.RING FRAME 11-15  SJ 11 South Zone Con     6821.89      7209.26   
17   31.RING FRAME 16-20  SJ 11 South Zone Con     6049.12      6425.47   
18   32.RING FRAME 21-25  SJ 11 North Zone Con     6481.04      6070.30   
19   33.RING FRAME 26-30  SJ 11 North Zone Con     6471.42      6160.90   
20   34.RING FRAME 31-35  SJ 11 North Zone Con     6619.86      6520.43   
21   35.RING FRAME 36-40  SJ 11 North Zone Con     6200.00      6200.00   
22    35.LINC CONER 1-10  SJ 11 South Zone Con     2292.18      2348.64   
23   36.LINC CONER 11-20  SJ 11 South Zone Con     2905.96      2943.62   
24   37.LINC CONER 21-30  SJ 11 North Zone Con     2181.58      2118.38   
25   38.LINC CONER 31-40  SJ 11 North Zone Con     2752.92      2763.26 

我想搜索包含Ring Frame的行并获取其各自的值。

我试过这个:

代码语言:javascript
代码运行次数:0
运行
复制
df = data[15:22]

但我想找出名字。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-12 06:58:38

您可以在掩码中使用boolean indexing,其中首先将所有值转换为lower,然后使用contains

代码语言:javascript
代码运行次数:0
运行
复制
print (df[df['Area of Power Cons.'].str.lower().str.contains('ring frame', na=False)])

使用apply的另一种解决方案,但只有在不使用NaN值的情况下才能工作:

代码语言:javascript
代码运行次数:0
运行
复制
print (df[df['Area of Power Cons.'].apply(lambda x: 'ring frame' in x.lower())])

如果需要提取值,请使用str.extract

代码语言:javascript
代码运行次数:0
运行
复制
print (df['Area of Power Cons.'].str.lower().str.extract('ring frame (.*)'))

如果所有值都大写:

代码语言:javascript
代码运行次数:0
运行
复制
print (df['Area of Power Cons.'].str.extract('RING FRAME (.*)'))
票数 3
EN

Stack Overflow用户

发布于 2016-12-12 07:13:37

我认为正则表达式在这里也会有帮助。您可以指定使用它进行搜索的规则。

例如,您可以这样做:

代码语言:javascript
代码运行次数:0
运行
复制
import re 
m = re.search('*RING FRAME*')
m.group(0)

请注意,*通配符是“贪婪的”,因此它将考虑到所有先前的和后续的符号。我不知道您是如何存储字符串的,以及它们是否分开,但是您可以尝试使用re。顺便说一句,它们是重要的蟒蛇技能(尽管我自己还没有经常使用它们)。

您可以在官方python:https://docs.python.org/2/library/re.html中找到关于正则表达式的更多信息。

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

https://stackoverflow.com/questions/41095576

复制
相关文章

相似问题

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