Я думаю, что вам нужны столбцы подкачки, также лучше использовать []
вместо точечной нотации, если имена столбцов похожи на методы в pandas как DataFrame.size
:
df = pd.DataFrame({'cut':['Fair', 'Good'] * 3, 'volume':[1, 5, 10, 29, 30, 2]})
labs = ['small','medium','big','large']
df['size'] = pd.qcut(df.volume,4,labels=labs)
#there is 18 values in df
print (df.size)
18
df1 = pd.crosstab(df.size,df.cut,margins=True,normalize='columns')
print (df1)
cut Fair Good All
row_0
18 1.0 1.0 1.0
df2 = pd.crosstab(df['cut'], df['size'],margins=True,normalize='columns')
print (df2)
size small medium big large All
cut
Fair 0.5 0.0 1.0 0.5 0.5
Good 0.5 1.0 0.0 0.5 0.5