熊猫groupby列,然后根据第三列创建另外两个列

时间:2018-12-01 12:43:30

标签: python pandas dataframe

我试图按列对数据框进行分组,并基于此分组获得总的“已批准”或“未批准”值,但未成功。

示例:

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

我想要的输出:

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

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以实现这种稍微不同的方式,尽管这是两行过程。

for(int i = 0; i < 100; i++)
    noitfyMap(new Marker(getRandomPosition()));

randomPosition$ df Approved PlaceTest 0 1 21 1 0 21 2 1 22 3 0 22 带有新列:

groupby

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

groupby

注意::它适用于熊猫版本fillna

对于大于$ 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