你可以用
pd.crosstab
In [329]: pd.crosstab(df.id, df.col1)Out[329]:col1 a b c d eid10 1 1 0 1 020 0 1 0 0 030 1 0 1 0 040 0 0 0 0 1
或者 ,使用
pd.pivot_table
In [336]: df.pivot_table(index='id', columns='col1', aggfunc=len, fill_value=0)Out[336]:col1 a b c d eid10 1 1 0 1 020 0 1 0 0 030 1 0 1 0 040 0 0 0 0 1
或者 ,使用
groupby和
unstack
In [339]: df.groupby(['id', 'col1']).size().unstack(fill_value=0)Out[339]:col1 a b c d eid10 1 1 0 1 020 0 1 0 0 030 1 0 1 0 040 0 0 0 0 1



