获取数据框选择的行位置

时间:2015-02-23 03:29:42

标签: python pandas dataframe

我想获取行位置,而不是索引,所以我可以稍后使用df.iloc(row_positions)来使用结果。

这是一个例子:

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函数,但也许还有一些Pandas内置函数。

2 个答案:

答案 0 :(得分:0)

您可以使用where中的numpy

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),) 

答案 1 :(得分: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