Ответ 1
Это должно сделать трюк
'g' in df.index
Я уверен, что есть очевидный способ сделать это, но не думаю, что сейчас что-то пятно.
В основном вместо повышения исключения я хотел бы получить 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')
Это должно сделать трюк
'g' in df.index
Просто для справки, поскольку это то, что я искал, вы можете проверить наличие в значениях или индексе путем добавления метода ".values", например.
g in df.<your selected field>.values
g in df.index.values
Я нахожу, что добавление ".values" для получения простого списка или ndarray out существует, или проверки "in" выполняются более плавно с другими инструментами python. Просто подумал, что я брошу это для людей.
Мультииндекс работает немного иначе, чем один индекс. Вот несколько методов для мультииндексированного блока данных.
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
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")