Как я могу получить индекс строки, в которой значение имеет определенное значение? - PullRequest
1 голос
/ 07 августа 2020

Доброе утро,

У меня есть фрейм данных, который имеет только значения True и False, и я хочу получить индекс строки, в котором значение True выходит. Я пробовал это:

[i for i in df_str[df_str.columns.values] if i== True]

Но это возвращает пустой массив. Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 07 августа 2020

Вот способ сделать это. Я использую данные Syntheti c для демонстрации.

df = pd.DataFrame({"a": np.random.choice([True, False], 10), 
              "b": np.random.choice([True, False], 10)}) 

print(df)
#        a      b
# 0  False   True
# 1   True  False
# 2  False   True
# 3   True   True
# 4  False  False
# 5   True  False
# 6  False   True
# 7   True  False
# 8   True  False
# 9   True   True

# 'a' and 'b' are the columns you'd like to search
df[df[["a", "b"]].sum(axis=1) > 0].index.to_list()
# ==> [0, 1, 2, 3, 5, 6, 7, 8, 9]
0 голосов
/ 07 августа 2020

Лучший способ получить индексы, где присутствует True (для предоставленного образца), - использовать any. Следующий код предоставит вам все индексы, где любое значение в конкретной строке равно True.

df=pd.DataFrame({"A":[True, False, False, True],"B":[True, True, False, False]})
indices=df[df.any(axis=1)].index

Ожидаемый результат

Int64Index([0, 1, 3], dtype='int64')
0 голосов
/ 07 августа 2020

Вот решение

# for single column
df.index[df['col_name'] == True].tolist()

#for multiple columns
df[df[["a", "b"]].sum(axis=1) > 0].index.to_list()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...