我想获取行位置,而不是索引,所以我可以稍后使用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内置函数。
答案 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