假设在Pandas中我有一个像这样的数据框:

index    value

1        1
2        0
3        1
4        1
5        0
6        1


我想计算特定值序列发生了多少次,例如0在1之后立即发生了多少次(即[1,0]发生了多少次,在上面的示例中是两次),或者如何[1,0,1]多次发生(再次,两次)。

有没有一种方法可以不使用仅for循环?

最佳答案

广义解

def tuplify(s, k):
    return list(zip(*[s.values[i:].tolist() for i in range(k)]))

s = pd.Series([1, 0, 1, 1, 0, 1])

pd.value_counts(tuplify(s, 3))

(1, 0, 1)    2
(1, 1, 0)    1
(0, 1, 1)    1
dtype: int64


您可以将其分配给变量,然后获取所需的元组。

counts = pd.value_counts(tuplify(s, 3))
counts[(1, 0, 1)]

2




分解

tuplify(s, 3)

[(1, 0, 1), (0, 1, 1), (1, 1, 0), (1, 0, 1)]


元组是可哈希的并且可以计数,因此pd.value_counts的工作原理如上所示。

关于python - 如何计算 Pandas 中的一系列值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41153949/

10-12 21:47