我试图以下面的形式得到我的表.出于某种原因,我无法使我的枢轴代码工作.
df = pd.DataFrame([('a','f1'), ('a','f2'),('a','f3') ,('b','f4'),('c','f2'), ('c','f4')], columns = ['user', 'val'])
df
---
user val
a f1
a f2
a f3
b f4
c f2
c f4
>> output
user f1 f2 f3 f4
a 1 1 1 0
b 0 0 0 1
c 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
选项1
get_dummies带groupby+sum
df.set_index('user').val.str.get_dummies().sum(level=0)
f1 f2 f3 f4
user
a 1 1 1 0
b 0 0 0 1
c 0 1 0 1
Run Code Online (Sandbox Code Playgroud)
选项2
groupby + value_counts+unstack
df.groupby('user').val.value_counts().unstack(fill_value=0)
val f1 f2 f3 f4
user
a 1 1 1 0
b 0 0 0 1
c 0 1 0 1
Run Code Online (Sandbox Code Playgroud)
方案3
pivot_table与size作为aggfunc.
df.pivot_table(index='user', columns='val', aggfunc='size', fill_value=0)
val f1 f2 f3 f4
user
a 1 1 1 0
b 0 0 0 1
c 0 1 0 1
Run Code Online (Sandbox Code Playgroud)