Можно ли найти позиции индекса определенных строк в большом кадре данных (80000 строк, 6 столбцов), используя метод iloc? - PullRequest
0 голосов
/ 09 сентября 2018

Мой фрейм данных содержит шесть столбцов данных с плавающей запятой и около 80 000 строк. Один из столбцов «Текущий», а иногда и отрицательный. Я хотел найти местоположения индекса, когда значение «Текущее» отрицательно. Мой код указан ниже:

currnet_index = my_df[(my_df["Current"]<0)].index.tolist()
print(current_index[:5])

Это дает вывод, как я хотел:

[0, 124, 251, 381, 512]

Это хорошо. Можно ли написать этот код, используя метод iloc? Я попытался с помощью следующего кода, но он дает ошибку. Мне интересно узнать, какой из них лучший и самый быстрый метод?

current_index = my_df.iloc[(my_df["Current"]<0)]

Вывод:

NotImplementedError: iLocation based boolean indexing on an integer type is not available

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

С iloc вам нужно использовать логический массив вместо логического серии . Для этого вы можете использовать pd.Series.values. Вот демо:

df = pd.DataFrame({'Current': [1, 3, -4, 9, -3, 1, -2]})

res = df.iloc[df['Current'].lt(0).values].index

# Int64Index([2, 4, 6], dtype='int64')

Кстати, loc работает либо с массивом, либо с серией.

0 голосов
/ 09 сентября 2018

Вы можете просто использовать следующее

my_df.ix[my_df['Current']<0].index.values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...