1

我有的:

series = ['foo', 'bar', 'baz', 'foo', 'baz', 'foo' ]
column = [1, 2, -3, -4, 5, -6]


list = [column[function(x)].count() for x in series]

list:
foo = 3
bar = 1
baz = 2

工作正常,系列中的每个实例都被计算在内。

只需要计算正数实例,因此:

list = [column[function(x)].count() for x in series if (x := function(x)) >= 0]

list:

foo = 1
bar = 1
baz = 1

发现海象运算符,但在我的情况下 x 是一个字符串,也许是核心问题?

我确实收到海象部分代码的语法错误。

我需要总数和正数计数,在函数中创建一个“总数”和“正数”列似乎很笨重,有没有办法通过列表理解来做到这一点。

预先感谢您的协助。

4

2 回答 2

0

您正在调用function(x)wherex的结果function(x)。尝试:

vals = [column[y].count() for x in series if (y := function(x)) >= 0]

笔记:

  1. 使用不同的变量名,x这样它就不会那么混乱(这可能也是您的语法错误的根源)。
  2. list是类型名称,请为值列表选择不同的名称。
于 2020-12-23T17:02:16.093 回答
0

既然你标记了pandas

pd.Series(column).gt(0).groupby(series).agg({'count','sum'})

输出:

     count  sum
bar      1    1
baz      2    1
foo      3    1
于 2020-12-23T16:57:06.107 回答