我有一个按数量排序的数据帧,每个名称有5个类别,如下所示:
| Name | Category | Amount |
|------|----------|--------|
| Abel | A | 9.2 |
| Abel | B | 3 |
| Abel | C | 2.5 |
| Abel | E | 2 |
| Abel | X | 0 |
| Cain | W | 93 |
| Cain | A | 2 |
|------|----------|--------|
这就是我最终想要的:
| Name | Cat 1 | Cat 2 | Cat 3 | Cat 4 | Cat 5 |
|------|-------|-------|-------|-------|-------|
| Abel | A | B | C | E | X |
| Cain | W | A | - | - | - |
|------|-------|-------|-------|-------|-------|
我尝试了df.pivot(“Name”,“Category”),但它将值(例如A,B,…)设置为列名,但我希望将5列预定义为“cat1”到“cat5”,因此我不确定现在如何获得结果。而且,并非所有的名称都有5行。例如,Cain只有top 2,这意味着cat3、cat4和Cat5列应该为null或“-”。有什么帮助吗?谢谢
更新:
好的,例如,如果我所有的名字只有2个类别记录,我仍然想为前5个类别(即Cat 1、Cat 2、Cat 3、Cat 4、Cat 5)获得5个新列
现在如果我这么做了
df["g"] = top5_jmi.groupby("Name").cumcount().add(1)
如果我以后再旋转它,这只会给我2列。如何获得5列?例如
| Name | Category | Amount |
|------|----------|--------|
| Abel | A | 9.2 |
| Abel | B | 3 |
| Cain | W | 93 |
| Cain | A | 2 |
|------|----------|--------|
should still give me this:
| Name | Cat 1 | Cat 2 | Cat 3 | Cat 4 | Cat 5 |
|------|-------|-------|-------|-------|-------|
| Abel | A | B | - | - | - |
| Cain | W | A | - | - | - |
|------|-------|-------|-------|-------|-------|
用途:
编辑:使用^{} 添加缺少的列:
相关问题 更多 >
编程相关推荐