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 шт):
Удалить всё же строки или колонки? Если колонки, то так. Наверное, можно оптимальнее, но сразу не соображу:
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