2017-04-03 75 views
8

如何使用Pandas获取某个列中包含特定值的数据框中的行数?例如,我有以下数据框:如何获取熊猫数据框中的行号?

 ClientID LastName 
0 34  Johnson 
1 67  Smith 
2 53  Brows 

如何查找在'LastName'列中具有'Smith'的行的编号?

+2

试试这个:'df.LastName.eq(“史密斯”)和()' – MaxU

+0

@MaxU这将返回包含姓氏“Smith”的行的总数,而不是单个行号。 –

+0

终于!!!我发现了这个问题。几个月以来,我一直在努力解决这个问题。 –

回答

8

要获得匹配所有指标“史密斯

>>> df.loc[df['LastName']=='Smith'].index 
Int64Index([1], dtype='int64') 

>>> df.loc[df['LastName']=='Smith'].index.values 
array([1]) 

,或者如果只有一个和你想要的整数,只是子集

>>> df.loc[df['LastName']=='Smith'].index[0] 
1 
3
df.index[df.LastName == 'Smith'] 

df.query('LastName == "Smith"').index 

将返回所有行索引,其中LastNameSmith

Int64Index([1], dtype='int64') 
+0

df.index完美。谢谢。 – Simon

3
df.loc[df.LastName == 'Smith'] 

将返回该行

ClientID LastName 
1 67   Smith 

df.loc[df.LastName == 'Smith'].index 

将返回指数

Int64Index([1], dtype='int64') 

注:列名“姓氏”和“姓氏”甚至“姓”三个唯一的名称。最佳做法是首先使用df.columns检查确切的名称。如果你真的需要剥离所有的空格的列名,你可以先做

df.columns = [x.strip().replace(' ', '') for x in df.columns] 
+0

如果列名中间有一个空格(例如,姓氏),该怎么办? 'df.loc [df.LastName =='Smith']。index'会怎样变化? – sprogissd

+0

@ sprogissd,pl请参阅答案 – Vaishali

+0

中的NOTE NOTE如果有多个Smith? –

1
count_smiths = (df['LastName'] == 'Smith').sum() 
+1

这将返回包含姓氏“Smith”的行的总数,而不是个别行号。 –