2017-04-03 70 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」的行的總數,而不是個別行號。 –