我有一张Excel工作表,用于从中导出数据,我需要分别对两列求和并将它们除以得到答案。但是,在进行求和运算时,我不想让我的代码考虑“ YTD chg hrs real”列的负值(即,我只想对正值求和)。如何从以下代码中实现这一目标?
select artistid1, artistid2, sum(num) from (
select s1.songid as songid1, s1.artistid as artistid1, s2.songid as songid2, s2.artistid as artistid2,
case when s1.songid = s2.songid then 1 else 0 end as num
from mytable s1 cross join mytable s2
where s1.artistid < s2.artistid)
group by artistid1, artistid2
order by artistid1;
答案 0 :(得分:0)
想象一下,您有一个名为df
的数据框,它有一列整数。此代码将帮助您计算仅正值的总和。
# df is your dataframe, 'A' is the column.
sum = df[df['A']>0].sum()
您可以找到正数索引,并且仅计算所得子帧的总和。
答案 1 :(得分:0)
出于示例目的,让我们创建以下DataFrame:
df = pd.DataFrame({'A': [ 2.5, 3.5, -10.1 -7.5, 3.0 ],
'B': [ 3.5, -10.2 -7.8, 0.5, -0.1 ]})
然后,仅保留正值,创建一个辅助DataFrame:
df2 = df.where(df > 0, 0)
然后,要计算sum(A)/ sum(B),请执行:
df2.A.sum() / df2.B.sum()
对于上述示例数据,结果为 2.25 。
现在将列名称更改为您的列,就可以得到结果。