python - 按组计算多列中的唯一值(熊猫数据框)
问题描述
我在熊猫中有一个数据框:
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
我需要将此数据框转换为:
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
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
或使用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
推荐阅读
- python - 拟合神经网络时出现 UnboundLocalError - TensorFlow 错误?
- python - Sympy - dsolve 函数计算能力的限制?
- javascript - 如何从对象数组中获取元素(JavaScript)
- sql-server - 同一张表上的两个外键:如何实现删除级联?
- python - 如何让 WebDriverWait 查找某个数字
- android - EditText 在我使用内容之前清除
- git - 将更改推送到 git 的正确方法
- java - 如何使用 .sh 脚本 (Openj9) 运行具有不同 java 路径的 jar
- awk - 在 awk 中随机播放和编辑列
- ionic2 - 如何修复 IONIC 2 中的“Invalid Provider”错误