我的数据看起来像这样(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(“资源”),但我不明白如何迭代组中的项目以构建所需的矩阵。
如何获得所需的结果?
答案 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 - - + +
>>> df.groupby(['User', 'Resource']).aggregate(lambda _: '+').unstack().fillna('-')
Resource Res_1 Res_2 Res_3 Res_8
User
User1 + - + +
User2 + + - -
User3 - - + +