Учитывая DataFrame с колонкой «BoolCol», мы хотим, чтобы найти индексы в DataFrame, в которой значение для «BoolCol» == ПравдаPython Панда: Получить индекс строк, который соответствует определенному значению столбца
I в настоящее время есть итерация способ сделать это, который работает отлично:
for i in range(100,3000):
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
Но это не путь Правильный панды, чтобы сделать это. После некоторых исследований, я в настоящее время с помощью этого кода:
df[df['BoolCol'] == True].index.tolist()
Это один дает мне список индексов, но они не матч, когда я проверяю их, выполнив:
df.iloc[i]['BoolCol']
Результат фактически False !!
Какой будет правильный способ Pandas для этого?
Еще один способ сделать 'df.query ('BoolCol')'. –
Я знаю, что это старо, но мне интересно, есть ли простой способ получить номера индексов на основе 0 из запроса. Мне нужны номера символов, потому что я хочу выбрать несколько строк до и после строки, удовлетворяющей определенному условию. Поэтому мой план состоял в том, чтобы получить 0-индексы строк, удовлетворяющих условию, а затем создать срезы для использования в iloc(). Единственное, что я вижу, это get_loc, но он не может принимать массив. – sheridp
@sheridp: Если у вас есть булевая маска, вы можете найти порядковые индексы, где 'mask' является' True', используя 'np.flatnonzero'. Я отредактировал сообщение выше, чтобы показать, что я имею в виду. – unutbu