使用pandas来过滤Excel表格

我已经使用Pandas导入了一个Excel表格。 该表包含表示节点,X,Y和Z数据的四列。 我用了下面的脚本:

import pandas as pd SolidFixity = pd.read_excel('GeomData.xlsx', sheetname = 'SurfaceFixitySolid') 

接下来我要做的就是使用filter表来过滤这个dataframe来select感兴趣的节点。 我用这个命令:

 SolidFixity.filter(like = '797', axis = 'Nodes') 

这没有奏效,并抛出以下错误:

ValueError:没有轴命名节点的对象types

我知道有一个名为Nodes的轴,因为以下命令:

 In[17]SolidFixity.axes 

输出以下内容:

 Out[17]: [RangeIndex(start=0, stop=809, step=1), Index(['Nodes', 'X', 'Y ', 'Z'], dtype='object')] 

节点就在那里,像太阳一样闪闪发光。

我在这里做错了什么?

看来你需要boolean indexing或含有掩码query contains或与797完全匹配比较:

 SolidFixity = pd.DataFrame({'Nodes':['797','sds','797 dsd','800','s','79785'], 'X':[5,3,6,9,2,4]}) print (SolidFixity) Nodes X 0 797 5 1 sds 3 2 797 dsd 6 3 800 9 4 s 2 5 79785 4 a = SolidFixity[SolidFixity.Nodes.str.contains('797')] print (a) Nodes X 0 797 5 2 797 dsd 6 5 79785 4 b = SolidFixity[SolidFixity.Nodes == '797'] print (b) Nodes X 0 797 5 b = SolidFixity.query("Nodes =='797'") print (b) Nodes X 0 797 5 

filter函数有可能的轴只有值:

axis:整数或string轴名称

要过滤的轴。 默认情况下,这是信息轴,Series的index ,DataFrame的columns

并返回所有的列, like regexitems

 df = pd.DataFrame({'A':list('abcdef'), 'B':[4,5,4,5,5,4], 'C797':[7,8,9,4,2,3], '797':[1,3,5,7,1,0], 'E':[5,3,6,9,2,4], 'F':list('aaabbb')}) print (df) 797 AB C797 EF 0 1 a 4 7 5 a 1 3 b 5 8 3 a 2 5 c 4 9 6 a 3 7 d 5 4 9 b 4 1 e 5 2 2 b 5 0 f 4 3 4 b a = df.filter(like = '797', axis = 1) #same as #a = df.filter(like = '797', axis = 'columns') print (a) 797 C797 0 1 7 1 3 8 2 5 9 3 7 4 4 1 2 5 0 3 

 c = df.filter(items = ['797'], axis = 1) #same as #c = df.filter(items = ['797'], axis = 'columns') print (c) 797 0 1 1 3 2 5 3 7 4 1 5 0