我有这样的数据帧。
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
的行并获取其各自的值。
我试过了:
df = data[15:22]
但我想搜索这些名字。提前谢谢。
答案 0 :(得分:3)
您可以将boolean indexing
与掩码一起使用,首先将所有值转换为lower
,然后使用contains
:
print (df[df['Area of Power Cons.'].str.lower().str.contains('ring frame', na=False)])
使用apply
的另一种解决方案,但只有在NaN
值不是<{1}}时才有效。
print (df[df['Area of Power Cons.'].apply(lambda x: 'ring frame' in x.lower())])
如果需要提取值,请使用str.extract
:
print (df['Area of Power Cons.'].str.lower().str.extract('ring frame (.*)'))
如果所有值均为大写:
print (df['Area of Power Cons.'].str.extract('RING FRAME (.*)'))
答案 1 :(得分:1)
我认为正则表达式在这里也会有所帮助。您可以指定使用它进行搜索的规则。
例如,您可以执行以下操作:
import re
m = re.search('*RING FRAME*')
m.group(0)
请注意*通配符是&#34;贪婪&#34;,因此它会考虑所有先前和后续的标志。我不知道你是如何存放你的琴弦的,如果它们是分开的,你可以试一试。 顺便学习它们是一项重要的蟒蛇技能(尽管我自己还没有很多地使用它们)
您可以在官方python doc中找到有关正则表达式的更多信息:https://docs.python.org/2/library/re.html