pandas 在panda的另一列上使用带条件的goupby

hwamh0ep  于 2022-12-17  发布在  Go
关注(0)|答案(2)|浏览(124)

如果数据中的另一列有非零值,我试图计算数据框中某些元素的总和。

data = {'Type': ['A', 'A', 'B', 'C', 'C'] ,
    'Vol' : [10, 20, 15, 15, 15] ,
    'Cost' : [500, 300, 200, 400, 400] , 
    'IsSold' : [1, 0, 1, 1, 0]}
totalA = 0
totalB = 0
totalC = 0
totalD = 0
for idx, el in enumerate(df.iloc[:,:]):
if df['Type'][idx] == "A" and df['IsSold'][idx] == 1 :
    totalA+= df['Vol'][idx]

字符串
它的工作,但我想知道是否有一个更好的方法来计算所需的参数。因为在我的数据(基于类型列)的不同组的数量很高,我认为这不是最佳的解决方案。我还尝试使用groupby函数如下:

df.groupby('Type')[['Vol']].sum()

但我不知道如何检查这个方法的条件。

xiozqbni

xiozqbni1#

您可以在.groupby之前进行过滤:

out = df[df.IsSold == 1].groupby("Type")["Vol"].sum()
print(out)

图纸:

Type
A    10
B    15
C    15
Name: Vol, dtype: int64
yquaqz18

yquaqz182#

您可以按TypeIsSold进行groupby,也可以先过滤InSold == 1的行,然后再按groupby进行groupby。

df.query('IsSold==1').groupby('Type')['Vol'].sum()

相关问题