我想在交叉表数据中添加新列

时间:2019-12-05 08:42:06

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

我有一些交叉制表数据。我使用

创建的

x = pd.crosstab(a['Age Category'], a['Category'])

| 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: cannot insert an item into a CategoricalIndex that is not already an existing category

感谢您的时间和考虑。

1 个答案:

答案 0 :(得分:2)

使用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