如何消除负值并计算正整数的和?

时间:2019-03-26 16:52:02

标签: python pandas numpy group-by data-analysis

我有一张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;

2 个答案:

答案 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

现在将列名称更改为您的列,就可以得到结果。