2013-07-26 83 views
1

如何在給定列滿足特定條件時從DataFrame獲取索引對象?確定符合條件的DataFrame索引對象

下收益與True/False值的Series對象,其中在my_dataframefoo列中的某些條件得到滿足:

true_entries = my_dataframe['foo'].apply(my_lambda_function) == True 

但我想獲得對應於這些條目的index對象。

我該怎麼做?

作爲一個應用程序的例子,我想在符合條件的數據框中放置行。

更新:

我試圖從@DSM的建議,從我的數據幀丟棄條目(行),但下面的命令:

indices_to_drop = my_df.index[my_df['foo'].apply(my_lambda_function) == True] 
my_df.drop(indices_to_drop) 

回報:

DeprecationWarning: height has been deprecated 

回答

2

如果您想要一個對應於真值的Index,可以使用布爾Series作爲df.index上的切片:

>>> df 
    A B 
0 10 -5 
1 20 -2 
2 30 1 
3 40 4 
4 50 7 
>>> df["B"].apply(lambda x: x % 2 == 0) 
0 False 
1  True 
2 False 
3  True 
4 False 
Name: B, dtype: bool 
>>> df.index[df["B"].apply(lambda x: x % 2 == 0)] 
Int64Index([1, 3], dtype=int64) 

但是,如果您只想擺脫符合條件的行,則根本不需要構建顯式索引。您可以簡單地保持條件不是遇到的那些:

>>> df[~df["B"].apply(lambda x: x % 2 == 0)] 
    A B 
0 10 -5 
2 30 1 
4 50 7 
+0

謝謝。奇怪的是,如果我使用該索引對象從我的數據框中刪除行,我會得到:'/opt/python/virtualenvs/work/lib/python2.7/site-packages/pandas/core/config.py:570:棄用警告:身高已被棄用。這是熊貓的最新穩定版本(兩天前的0.12.0)。我更新了OP。 –

相關問題