Pandas Сравнение нескольких столбцов

В dataframe есть три столбца со значениями true или false. Как удалить строки при условии наличия true именно во всех строках. A True True True B False True True

Т.е удалить A из df

Пишу с телефона sorry

Import pandas as pd d = {‘a’: pd.Series ( [True, False] ), index=[‘A’, ‘B’] ), ‘b’: pd.Series ( [True, True], index= [‘A’,’B’] ), ‘c’: pd.Series ([ True, True], index = [‘A’, ‘B’])}

Delete cell if True, True, True in all col


По логике, если есть False хоть в одном выбираем эту строку.


Ответы (1 шт):

Автор решения: CrazyElf

Удалить всё же строки или колонки? Если колонки, то так. Наверное, можно оптимальнее, но сразу не соображу:

import pandas as pd
import numpy as np
d = pd.DataFrame({'a': pd.Series([True, False]), 'b': pd.Series([True, True]), 'c': pd.Series([True,True])})

DataFrame:

    a       b       c
0   True    True    True
1   False   True    True

Убираем колонки, где все значения True:

d.drop(columns=d.columns[d.all()]) # по умолчанию axis=0 у d.all

Вывод:

    a
0   True
1   False

Если наоборот строки нужно удалить, где все True, то так:

d.drop(index=d.index[d.all(axis=1)])

Вывод:

    a       b       c
1   False   True    True
→ Ссылка