拥有数据框'df':
l = [['a',1,3,3,1,1,3,3,3],['b',1,1,3,1,3,3,1,3],['c',1,1,1,1,3,1,1,1]]
col = ['id','x1','x2','x3','x4','y1','y2','y3','y4']
df = pd.DataFrame (l, columns = col)
我想在X = {x1,x2,x3,x4}和Y = {y1,y2,y3,y4}列的子集的每个子集中计算值“1”的行数(ID)。 对于示例子集s1 = {[x1,x3],[y2,y3,y4]},代码执行:
df[(df['x1']==1) & (df['x3']==1) & (df['y2'] == 1) & (df['y3'] == 1) & (df['y4'] == 1)].count()['id']
并返回“1”作为计数。并对{子集的X列} x {Y列的子集}的所有子集重复此操作。
我需要先构建子集的所有子集(例如使用建议的函数here),然后对每个子集执行计数。执行此操作的最佳方式是什么?