假设在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/