Существует простое однострочное решение вашей проблемы (если вы хотите кумулятивную and
операцию над столбцами, например A and B
, A and B and C
, A and B and C and D
и т. Д.):
import pandas as pd
test = {
"A": pd.Series([True, True, True]),
"B": pd.Series([True, False, False]),
"C": pd.Series([False, True, False]),
"D": pd.Series([True, False, False]),
}
df = pd.DataFrame.from_dict(test)
# Here is da man
print(df.cummin(axis="columns"))
Используя cummin
, если любое значение равно False
, все последующие после него будут False
, а также наименьшее значение.
Исходный кадр данных:
A B C D
0 True True False True
1 True False True False
2 True False False False
Накопительное значениеand
:
A B C D
0 True True False False
1 True False False False
2 True False False False
Первый столбец A
, второй A and B
, третий A and B and C
, последний A and B and C and D
.