Используйте DataFrame.groupby
:
df['count'] = df.groupby(['y','x'])['x'].transform('size')
print(df)
y x count
0 1 0 1
1 0 1 1
2 1 1 2
3 1 1 2
, если вы хотите список:
df.groupby(['y','x'])['x'].size().unstack(fill_value=0).stack().tolist()
#[0, 1, 1, 2]
на вашем месте я бы использовал dict :
df.groupby(['y','x'])['x'].size().unstack(fill_value=0).stack().to_dict()
#{(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 2}
Мы также можем сделать:
c = df['x'].ne(df['y'])
print(df.all(axis=1).sum())
print((~df.any(axis=1)).sum())
print(c.mul(df['x']).sum())
print(c.mul(df['y']).sum())
2
0
1
1