IIU C
мы можем установить индекс на 'customer', а затем составить стек данных, что позволит вам выполнить агрегацию с value_counts
df2 = df.set_index('customer').stack().groupby(level=0).value_counts().unstack()
-
print(df2)
None accessories hats shoes socks
customer
A NaN NaN 2.0 3.0 1.0
B NaN NaN NaN 2.0 2.0
C 2.0 2.0 1.0 1.0 NaN
если вас не волнует None
, вы можете преобразовать его в истинное нулевое значение, и оно будет игнорироваться в группе
print(df.replace('None',np.nan).set_index('customer').stack().groupby(level=0).value_counts().unstack())
accessories hats shoes socks
customer
A NaN 2.0 3.0 1.0
B NaN NaN 2.0 2.0
C 2.0 1.0 1.0 NaN