У меня есть следующий фрейм данных:
import pandas as pd
import numpy as np
ds = pd.DataFrame({'z':np.random.binomial(n=1,p=0.5,size=10),
'x':np.random.binomial(n=1,p=0.5,size=10),
'u':np.random.binomial(n=1,p=0.5,size=10),
'y':np.random.binomial(n=1,p=0.5,size=10)})
ds
z x u y
0 0 1 0 0
1 0 1 1 1
2 1 1 1 1
3 0 0 1 1
4 0 0 1 1
5 0 0 0 0
6 1 0 1 1
7 0 1 1 1
8 1 1 0 0
9 0 1 1 1
Как выбрать строки со значениями (0,1) для имен переменных, указанных в списке?
Это то, что я имею до сих пор:
zs = ['z','x']
tf = ds[ds[zs].values == (0,1)]
tf
Теперь напечатано:
z x u y
0 0 1 0 0
0 0 1 0 0
1 0 1 1 1
1 0 1 1 1
2 1 1 1 1
3 0 0 1 1
4 0 0 1 1
5 0 0 0 0
7 0 1 1 1
7 0 1 1 1
8 1 1 0 0
9 0 1 1 1
9 0 1 1 1
Который показывает дубликаты, а также имеет неправильную строку (строка № 2 - 1,1,1,1). Есть мысли или идеи? Конечно, я предполагаю, что есть питонский способ сделать это без вложенных циклов и грубой форсировки.