然后在第三列的基础上创建另外两列

2024-04-25 17:37:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试按列对数据帧进行分组,并基于此分组获取“已批准”或“未批准”的总值,但没有成功。你知道吗

示例:

PlaceTest | Approved    
       21 |        1    
       21 |        0    
       22 |        1    
       22 |        0

我想要的输出:

PlaceTest | Approved | NotApproved    
       21 |        1 |           1    
       22 |        1 |           1

谢谢!你知道吗


Tags: 数据示例approved总值placetestnotapproved
2条回答

你可以用稍微不同的方法来实现,这是一个两行的过程。你知道吗

$ df
   Approved  PlaceTest
0         1         21
1         0         21
2         1         22
3         0         22

第一个带有新列的groupbysum

$ df['Not Approved'] = df.groupby('PlaceTest')['Approved'].sum()

最后是groupbyfillna

$ df = df.groupby('PlaceTest')['Approved', 'Not Approved'].sum().fillna("1").reset_index()

$ df
   PlaceTest  Approved Not Approved
0         21         1            1
1         22         1            1

注意:它的熊猫版本0.21.0。你知道吗

对于大于0.21.0的版本,在上述用例中应使用以下方法:

>>> df.groupby('PlaceTest')['Approved', 'Not Approved'].max().fillna("1").reset_index()
   PlaceTest  Approved Not Approved
0         21         1            1
1         22         1            1

给予

>>> df
   PlaceTest  Approved
0         21         1
1         21         0
2         22         1
3         22         0

你可以发布

>>> df.assign(NotApproved=1 - df['Approved']).groupby('PlaceTest').sum().reset_index()
   PlaceTest  Approved  NotApproved
0         21         1            1
1         22         1            1

相关问题 更多 >

    热门问题