Я уверен, что есть очевидный способ сделать это, но сейчас не могу придумать ничего приятного.
В основном, вместо того, чтобы вызывать исключение, я хотел бы получить True
или False
увидеть, существует ли значение в df
индексе pandas .
import pandas as pd
df = pd.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
источник
n
, то1..n
можно проверить кортеж любой длины из'g' in df.columns
если ваш фрейм данных был определен с заголовками столбцов, а не индексом, например:df = pandas.DataFrame({'test':[1,2,3,4]}, columns=['a','b','c','d'])
Просто для справки, поскольку это то, что я искал, вы можете проверить наличие в значениях или индексе, добавив метод ".values", например
g in df.<your selected field>.values g in df.index.values
Я обнаружил, что добавление «.values» для получения простого списка или ndarray out делает существующие или «входящие» проверки более плавно с другими инструментами Python. Просто подумал, что брошу это людям.
источник
in g in df.index
выдает истину иin g in df.index.values
ложь. Интересно.Мультииндекс работает немного иначе, чем одиночный индекс. Вот несколько методов для мультииндексированного фрейма данных.
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
источник
с DataFrame: df_data
>>> df_data id name value 0 a ampha 1 1 b beta 2 2 c ce 3
Я старался:
>>> getattr(df_data, 'value').isin([1]).any() True >>> getattr(df_data, 'value').isin(['1']).any() True
но:
>>> 1 in getattr(df_data, 'value') True >>> '1' in getattr(df_data, 'value') False
Так весело: D
источник
isin
не будет проверять dtype.df['value'].isin([True]).any()
попробуйте это, он также даст вам True, потому что он совпадает с1
.True -> 1
.Код ниже не печатает логическое значение, но позволяет разбивать фреймы данных по индексу ... Я понимаю, что это, вероятно, не самый эффективный способ решения проблемы, но мне (1) нравится, как это читается, и (2) вы можете легко подмножество где индекс df1 существует в df2:
или где индекс df1 не существует в df2 ...
источник
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")
источник