我有一个数据框:
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
现在我想检查 and 的同时出现x == 1
,但仅在由andy == 1
定义的每个子组内。因此,对于上面显示的数据框, (group )满足条件,但(groups and ) 不满足条件。variable1
variable2
index == 4
A-a
index == 3
B-a
B-b
我想groupby()
需要一些魔法,但我找不到正确的方法。我也尝试过使用堆叠的数据框(使用df.stack()
),但这并没有让我更接近......