Подтвердить что ты не робот

Проверьте, существует ли значение в pandas индексе данных

Я уверен, что есть очевидный способ сделать это, но не думаю, что сейчас что-то пятно.

В основном вместо повышения исключения я хотел бы получить True или False, чтобы узнать, существует ли значение в pandas df index.

df = pandas.DataFrame({'test':[1,2,3,4]}, index=['a','b','c','d'])

df.loc['g']  # (should give False)

Теперь у меня есть следующие

sum(df.index == 'g')
4b9b3361

Ответ 1

Это должно сделать трюк

'g' in df.index

Ответ 2

Просто для справки, поскольку это то, что я искал, вы можете проверить наличие в значениях или индексе путем добавления метода ".values", например.

g in df.<your selected field>.values
g in df.index.values

Я нахожу, что добавление ".values" для получения простого списка или ndarray out существует, или проверки "in" выполняются более плавно с другими инструментами python. Просто подумал, что я брошу это для людей.

Ответ 3

Мультииндекс работает немного иначе, чем один индекс. Вот несколько методов для мультииндексированного блока данных.

df = pd.DataFrame({'col1': ['a', 'b','c', 'd'], 'col2': ['X','X','Y', 'Y'], 'col3': [1, 2, 3, 4]}, columns=['col1', 'col2', 'col3'])
df = df.set_index(['col1', 'col2'])

in df.index работает только для первого уровня только при проверке значения одного индекса.

'a' in df.index     # True
'X' in df.index     # False

Проверьте df.index.levels для других уровней.

'a' in df.index.levels[0] # True
'X' in df.index.levels[1] # True

Завершите df.index для кортежа индексной комбинации.

('a', 'X') in df.index  # True
('a', 'Y') in df.index  # False

Ответ 4

df = pandas.DataFrame({'g':[1]}, index=['isStop'])

#df.loc['g']

if 'g' in df.index:
    print("find g")

if 'isStop' in df.index:
    print("find a")