使用python pandas从原始数据构建访问矩阵

时间:2014-08-01 09:17:52

标签: python pandas

我的数据看起来像这样(pandas dataframe):

| User  | Resource |
|=======|========= |
| User1 | Res_1    |
| User1 | Res_8    |
| User2 | Res_1    |
| User2 | Res_2    |
| User3 | Res_8    |
| User3 | Res_3    |
| User1 | Res_3    |

如何从这些数据中构建这样的矩阵:

      | Res_1 | Res_2 | Res_3 | Res_8 |
User1 |   +   |   -   |   +   |   +   | 
User2 |   +   |   +   |   -   |   -   |
User3 |   -   |   -   |   +   |   +   |

我使用了df.groupby(“资源”),但我不明白如何迭代组中的项目以构建所需的矩阵。

如何获得所需的结果?

1 个答案:

答案 0 :(得分:2)

您可以使用pivot_table

>>> df.pivot_table(index='User', columns='Resource',
...                aggfunc=lambda _ : '+', fill_value='-')
Resource Res_1 Res_2 Res_3 Res_8
User                            
User1        +     -     +     +
User2        +     +     -     -
User3        -     -     +     +

.groupby后跟.unstack.fillna

>>> df.groupby(['User', 'Resource']).aggregate(lambda _: '+').unstack().fillna('-')
Resource Res_1 Res_2 Res_3 Res_8
User                            
User1        +     -     +     +
User2        +     +     -     -
User3        -     -     +     +