如果数据中的另一列有非零值,我试图计算数据框中某些元素的总和。
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()
但我不知道如何检查这个方法的条件。
2条答案
按热度按时间xiozqbni1#
您可以在
.groupby
之前进行过滤:图纸:
yquaqz182#
您可以按
Type
和IsSold
进行groupby,也可以先过滤InSold == 1的行,然后再按groupby进行groupby。