Я получил dataframe:панд - проверка состояния для каждой группы в dataframe
df = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': [1,0,0,1,1,0,0,1]})
df2 = df.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
df2['A']['a']['x'][4] = 1
df2['B']['a']['x'][3] = 1
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN 1 1
4 1 1 NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0
6 NaN NaN NaN NaN 0 NaN
7 NaN NaN NaN 1 NaN NaN
Теперь я хочу, чтобы проверить для одновременного вхождения x == 1
и y == 1
, но только в пределах каждой подгруппы, определяемый variable1
и variable2
. Таким образом, для приведенного выше кадра данных условие выполняется для index == 4
(группа A-a
), но не для index == 3
(группы B-a
и B-b
).
Я полагаю, что понадобится магия, но я не могу найти правильный путь. Я также пробовал экспериментировать с сложенных dataframe (с использованием df.stack()
), но это не получить меня ближе ...
вы цепь присвоившие, бея ch работает в этом случае, но см. [здесь] (http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-view-versus-copy), лучше сделать '' df2.loc [ :, ('A', 'a', 'x', 4)] = 1'' – Jeff