list.index
работает путем проверки равенства вашего ввода с элементами из списка и поиска True
.Затем он возвращает индекс первого совпадения.
Проверка равенства двух кадров данных возвращает кадр данных:
df1 = pd.DataFrame([[1, 2]])
df2 = pd.DataFrame([[1, 2]])
print(df1 == df2)
0 1
0 True True
Достоверность результата неоднозначна:
print(bool(df1 == df2))
# ValueError: The truth value of a DataFrame is ambiguous.
# Use a.empty, a.bool(), a.item(), a.any() or a.all().
Вариант 1
На мой взгляд, лучший способ проверить, есть ли у вас правильный фрейм данных, - это использовать упорядоченный словарь и определить ключи (предпочтительно, использовать в качестве ключей описательные имена):
from collections import OrderedDict
o = OrderedDict([(1, df1), (2, df2), (3, df3)])
print(list(o.keys()).index(2)) # 1
Опция 2
Использовать выражение генератора с is
, которое возвращает True
, только если 2 переменные указывают на один и тот же объект:
lst = [df1, df2, df3]
res = next(i for i, j in enumerate(lst) if j is df2) # 1