Pandas 按前 2 列分组,将下一列用作两个新字段,并使用单元格计数



>我有一个包含 3 列的数据框。 我想按日期分组,并将 WinID 作为两列并在单元格中计数。 这是我的数据帧:

    date        userid  extid   count
0   2019-01-16  1       4624    34
1   2019-01-16  1       4625    2
2   2019-01-16  2       4624    10
3   2019-01-16  2       4625    0
4   2019-01-17  1       4624    32
5   2019-01-17  1       4625    0
6   2019-01-17  2       4624    17
7   2019-01-17  2       4625    1
8   2019-01-18  1       4624    27
9   2019-01-18  1       4625    1
10  2019-01-18  2       4624    27
11  2019-01-18  2       4625    3
12  2019-01-21  1       4624    20
13  2019-01-21  1       4625    0
14  2019-01-21  2       4624    17
15  2019-01-21  2       4625    2

我想要的输出:

    date        userid 4624  4625
0   2019-01-16  1      34    2
1   2019-01-16  2      10    0
2   2019-01-17  1      32    0
3   2019-01-17  2      17    1
4   2019-01-18  1      27    1      
5   2019-01-18  2      27    3
6   2019-01-21  1      20    0
7   2019-01-21  2      17    2

我尝试过转置和数据透视表,但无法完成此操作。

您可以使用aggfunc='first' pivot_tablepivot在概念上是正确的,但它只支持一个标量index参数。

res = pd.pivot_table(df, index=['date', 'userid'], columns='extid',
                     values='count', aggfunc='first').reset_index()
print(res)
extid        date  userid  4624  4625
0      2019-01-16       1    34     2
1      2019-01-16       2    10     0
2      2019-01-17       1    32     0
3      2019-01-17       2    17     1
4      2019-01-18       1    27     1
5      2019-01-18       2    27     3
6      2019-01-21       1    20     0
7      2019-01-21       2    17     2

最新更新