2015-02-23 69 views
2

而不是索引,我想獲得行位置,所以我可以稍後使用df.iloc(row_positions)的結果。獲取DataFrame選擇的行位置

這是例子:

df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c']}, index=[10, 2, 7]) 
print df[df['a']>=2].index 
# Int64Index([2, 7], dtype='int64') 
# How do I convert the index list [2, 7] to [1, 2] (the row position) 
# I managed to do this for 1 index element, but how can I do this for the entire selection/index list? 
df.index.get_loc(2) 

更新

我可以用一個列表理解應用上get_loc功能選擇的結果,但也許有一些熊貓內建的功能。

+0

爲什麼你想得到行,當你總是可以說'pos = df ['a']> = 2',然後像'df [pos]'那樣使用它?我想'np.arange(len(df))[pos.values]'不是你想要的東西? – ssm 2015-02-23 04:24:00

回答

0

可以使用wherenumpy

import numpy as np 
df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c']}, index=[10, 2, 7]) 

np.where(df.a>=2) 

收益排指數:

(array([1, 2], dtype=int64),) 
0

@ SSM的答案是什麼,我通常會使用。但是回答你的特定查詢如何選擇多行試試這個:

df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c']}, index=[10, 2, 7]) 
indices = df[df['a']>=2].index 
print df.ix[indices] 
.ix索引方案

更多信息here

[編輯回答特定查詢]

怎麼辦我將索引列表[2,7]轉換爲[1,2](行位置)

df[df['a']>=2].reset_index().index