熊猫:在汇总某些值时使用groupby求和

时间:2020-05-29 16:38:59

标签: python pandas pandas-groupby

我有以下熊猫数据框:

      Pasture  Surface
Farm                  
01     Sown 1        2
01     Sown 2        3
01    Natural        3
01        Hay        5
02       Sown        7

我想对农场进行分组,以便每个农场只有两个牧场值sownnot sown,第一个牧场的表面总和为在相对Pasture值中具有“播种”,第二个是所有其他值的和。基本上我想获得的是:

      Pasture  Surface
Farm                  
01       Sown        5
     Not sown        8
02       Sown        7

我设法通过用相对的名称替换之前的名称,然后使用.groupby()来做到这一点,但是我想知道在.groupby()调用中是否有一种方法,或者无论如何将是最好的方法。谢谢!

(P.S .:这是我关于Stack Overflow的第一个问题,请让我知道我是否可以做得更好!)

1 个答案:

答案 0 :(得分:0)

我会做的:

sown_or_not = np.where(df.Pasture.str.contains('Sown'), 'Sown', 'Not Sown')

df.groupby(['Farm', sown_or_not]).Surface.sum()

输出:

Farm          
1     Not Sown    8
      Sown        5
2     Sown        7
Name: Surface, dtype: int64