第一列是index
,所以需要更改index='UserID'
至index=df.index
。
另外聚合函數是GroupBy.size
df = pd.pivot_table(df, index=df.index, columns=df['ID'], aggfunc='size', fill_value=0)
print (df)
ID a1 a2 a3
UserID
1 1 1 0
2 1 0 1
解crosstab
:
df = pd.crosstab(df.index,df['ID'])
print (df)
ID a1 a2 a3
row_0
1 1 1 0
2 1 0 1
或(pandas 0.20.1+)溶液 - groupby
通過index
和柱一起,骨料size
和重塑由unstack
:
df = df.groupby(['UserID','ID']).size().unstack(fill_value=0)
print (df)
ID a1 a2 a3
UserID
1 1 1 0
2 1 0 1
只
大熊貓婁0.20.1解決方案 - 通過reset_index
轉換索引列:
df = df.reset_index().groupby(['UserID','ID']).size().unstack(fill_value=0)
print (df)
ID a1 a2 a3
UserID
1 1 1 0
2 1 0 1
編輯:
看來指數可以通過索引名,可以選擇太(不知道它的工作原理波紋管0.20。 1):
df = pd.pivot_table(df, index='UserID', columns='ID', aggfunc='size', fill_value=0)
print (df)
ID a1 a2 a3
UserID
1 1 1 0
2 1 0 1
哇如此多的選擇。 – Dark