[英]Count unique values in multiple columns according by group (pandas dataframe)
I have a dataframe in pandas: 我在熊猫中有一个数据框:
a b c d e
0 1 x y t u
1 1 x z y v
2 1 y x t z
3 2 x t z u
4 2 z x y t
5 3 x z y t
I need to transform this dataframe into this: 我需要将此数据框转换为此:
a x y z t u v y z
0 1 3 3 2 2 1 1 3 2
1 2 2 1 2 2 1 0 1 2
2 3 1 1 1 1 0 0 0 0
IIUC IIUC
df.set_index('a').stack().groupby(level=0).value_counts().unstack(fill_value=0)
Out[514]:
t u v x y z
a
1 2 1 1 3 3 2
2 2 1 0 2 1 2
3 1 0 0 1 1 1
Or using melt
+ crosstab
或使用
melt
+ crosstab
s=df.melt('a')
pd.crosstab(s.a,s.value)
Out[518]:
value t u v x y z
a
1 2 1 1 3 3 2
2 2 1 0 2 1 2
3 1 0 0 1 1 1
df.melt(id_vars="a").groupby(["a","value"]).count().unstack().fillna(0)
variable
value t u v x y z
a
1 2.0 1.0 1.0 3.0 3.0 2.0
2 2.0 1.0 0.0 2.0 1.0 2.0
3 1.0 0.0 0.0 1.0 1.0 1.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.