python - 我想将新列添加到交叉表数据中

标签 python python-3.x pandas python-2.7 pandas-groupby

我有交叉表数据。我使用它创建了

x = pd.crosstab(a['年龄类别'], a['类别'])

| Category     | A | B  | C  | D |
|--------------|---|----|----|---|
| Age Category |   |    |    |   |
| 21-26        | 2 | 2  | 4  | 1 |
| 26-31        | 7 | 11 | 12 | 5 |
| 31-36        | 3 | 5  | 5  | 2 |
| 36-41        | 2 | 4  | 1  | 7 |
| 41-46        | 0 | 1  | 3  | 2 |
| 46-51        | 0 | 0  | 2  | 3 |
| Above 51     | 0 | 3  | 0  | 6 |

我想添加新列Total,它将包含交叉表数据中类似的行总和。


| Category     | A | B  | C  | D | Total |
|--------------|---|----|----|---|-------|
| Age Category |   |    |    |   |       |
| 21-26        | 2 | 2  | 4  | 1 | 9     |
| 26-31        | 7 | 11 | 12 | 5 | 35    |
| 31-36        | 3 | 5  | 5  | 2 | 15    |
| 36-41        | 2 | 4  | 1  | 7 | 14    |
| 41-46        | 0 | 1  | 3  | 2 | 6     |
| 46-51        | 0 | 0  | 2  | 3 | 5     |
| Above 51     | 0 | 3  | 0  | 6 | 9     |

我尝试了 x['Total'] = x.sum(axis = 1) 但此代码给了我 TypeError: 无法将项目插入尚未存在的 CategoricalIndex现有类别

感谢您的时间和考虑。

最佳答案

使用CategoricalIndex.add_categories用于将新类别附加到列:

x.columns = x.columns.add_categories(['Total'])
x['Total'] = x.sum(axis = 1)
print (x)
          A   B   C  D  Total
Category                     
21-26     2   2   4  1      9
26-31     7  11  12  5     35
31-36     3   5   5  2     15
36-41     2   4   1  7     14
41-46     0   1   3  2      6
46-51     0   0   2  3      5
Above 51  0   3   0  6      9

关于python - 我想将新列添加到交叉表数据中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59191197/

相关文章:

python - BytesIO 流到 Numpy 数组? (摄影机)

python - 打印数据框的行

python - 使用多个 isin 子句的 Pandas 索引

python - 相同功能的不同输出

python - 使用 matplotlib 绘制向日葵散点图

python - 在列表python中组合n个长度的字符串

python - 如何使用 Pyqt 小部件创建键盘和鼠标事件

python - LIST_NAME[-1] 提出 "]"python

python - 如何从一个 URL 下载多张图片

python - SQL ORDER BY 时间戳,相同的值