【问题标题】:I want to add new column into cross tabulation data我想在交叉表数据中添加新列
【发布时间】:2020-03-30 03:38:33
【问题描述】:

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

创建的

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

感谢您的时间和考虑。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2020-01-05
      • 2010-10-01
      • 2020-09-19
      相关资源
      最近更新 更多