我有以下熊猫数据框:
Pasture Surface
Farm
01 Sown 1 2
01 Sown 2 3
01 Natural 3
01 Hay 5
02 Sown 7
我想对农场进行分组,以便每个农场只有两个牧场值sown
和not sown
,第一个牧场的表面总和为在相对Pasture
值中具有“播种”,第二个是所有其他值的和。基本上我想获得的是:
Pasture Surface
Farm
01 Sown 5
Not sown 8
02 Sown 7
我设法通过用相对的名称替换之前的名称,然后使用.groupby()来做到这一点,但是我想知道在.groupby()调用中是否有一种方法,或者无论如何将是最好的方法。谢谢!
(P.S .:这是我关于Stack Overflow的第一个问题,请让我知道我是否可以做得更好!)
答案 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