计数满足两行条件的元素

时间:2020-10-22 14:24:34

标签: python pandas numpy functional-programming aggregate

data
A  B
1  1
5  1
3  6
5  3
3  1
  1. 如何应用函数编程来计算A [i]> A [i-1]和B [i] == B [i-1]的行数

  2. 以及如何打印这些行?

它们是不同的任务。我知道我们可以先解决第二个任务,然后再解决任务1。但是我对没有for / any_other循环的不同解决方案感到非常好奇。

可以使用以下数据结构:Numpy,Pandas,列表列表。

1 个答案:

答案 0 :(得分:0)

numpy中,您需要找到差异,然后比较新数组的值:

x = pd.DataFrame(data).values
diff = np.diff(x, axis=0)
mask = np.logical_and(diff[:,0]>0, diff[:,1]==0)

>>> mask
array([ True, False, False, False])

您现在可以解决这两个问题:

  • 计算A[i]>A[i-1]B[i]==B[i-1]所在的行数:

    >>> np.sum(mask)
    1
    
  • 打印以下行:

    >>> x[np.r_[False, mask]]
    array([[5, 1]])