Python 在滚动窗口中计算特定值
我有一个包含数千行的数据帧。一列仅包含3个值:-1、0、1。我想在滚动窗口(比如100)中计算特定值(比如0)出现的次数Python 在滚动窗口中计算特定值,python,pandas,dataframe,rolling-computation,Python,Pandas,Dataframe,Rolling Computation,我有一个包含数千行的数据帧。一列仅包含3个值:-1、0、1。我想在滚动窗口(比如100)中计算特定值(比如0)出现的次数 我怎么做?我没有看到与对象滚动相关的这种方法,我不知道如何通过应用来实现。这非常简单,我编写了一个快速演示。你应该明白这一点 示例 #参数 #可数列 #大小-窗口大小(100) def窗口(iterable,大小=2): i=国际热核实验堆(iter) 赢=[] 对于范围(0,大小)内的e: win.append(下一个(i)) 屈服赢 对于i中的e: win=win[1::
我怎么做?我没有看到与对象滚动相关的这种方法,我不知道如何通过应用来实现。这非常简单,我编写了一个快速演示。你应该明白这一点 示例
#参数
#可数列
#大小-窗口大小(100)
def窗口(iterable,大小=2):
i=国际热核实验堆(iter)
赢=[]
对于范围(0,大小)内的e:
win.append(下一个(i))
屈服赢
对于i中的e:
win=win[1::][e]
屈服赢
#样本数据
a=[1,0,0,0,1,1]
从收款进口柜台
结果=[]
value=1#保持计数的值(-1,0,1)
对于窗口中的i(a,2):
计数=计数器(i)[值]
结果.追加(计数)
#样本输出
打印(结果)
[1, 0, 0, 1, 2]
非常简单,我编写了一个快速演示。你应该明白这一点
示例
#参数
#可数列
#大小-窗口大小(100)
def窗口(iterable,大小=2):
i=国际热核实验堆(iter)
赢=[]
对于范围(0,大小)内的e:
win.append(下一个(i))
屈服赢
对于i中的e:
win=win[1::][e]
屈服赢
#样本数据
a=[1,0,0,0,1,1]
从收款进口柜台
结果=[]
value=1#保持计数的值(-1,0,1)
对于窗口中的i(a,2):
计数=计数器(i)[值]
结果.追加(计数)
#样本输出
打印(结果)
[1, 0, 0, 1, 2]
我想这会有帮助。我测试过这个,它是有效的
def cnt(x):
prev_count = 0
for i in x:
if i == 0:
prev_count+=1
return prev_count
df['col'].rolling(100,min_periods=1).apply(cnt)
我想这会有帮助的。我测试过这个,它是有效的
def cnt(x):
prev_count = 0
for i in x:
if i == 0:
prev_count+=1
return prev_count
df['col'].rolling(100,min_periods=1).apply(cnt)
这里有一种方法:迭代行并设置一个计数器列表和一个计数器=0,当df的索引达到每100个时,追加到列表中,并将计数器设置为0。至于获取值(我猜它在df的字符串中),可能需要使用正则表达式,或者在apply(lambda x:x.split(','))的帮助下将它们拆分到一个列表中,然后检查列表中是否有0。它有什么索引?请包括
df['thecolumn'].head(7)
。有一种方法可以做到这一点:迭代行并设置一个计数器列表和一个计数器=0,当df的索引达到每100个时,追加到列表中,并将计数器设置为0。至于获取值(我猜它在df的字符串中),可能需要使用正则表达式,或者在apply(lambda x:x.split(','))的帮助下将它们拆分到一个列表中,然后检查列表中是否有0。它有什么索引?请包括df['thecolumn'].标题(7)
。