在panda.DataFrame中是否有滚动的“any”函数?或者在滚动函数中是否有其他方法来聚合布尔值?
请考虑:
import pandas as pd
import numpy as np
s = pd.Series([True, True, False, True, False, False, False, True])
# this works but I don't think it is clear enough - I am not
# interested in the sum but a logical or!
s.rolling(2).sum() > 0
# What I would like to have:
s.rolling(2).any()
# AttributeError: 'Rolling' object has no attribute 'any'
s.rolling(2).agg(np.any)
# Same error! AttributeError: 'Rolling' object has no attribute 'any'
那么,当聚合布尔值时,我可以使用哪些函数呢?(如果numpy.any不起作用)https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.rolling.html中的滚动文档声明,返回“特定操作的Window或Rolling子类”,这实际上没有什么帮助。
3条答案
按热度按时间3pvhb19x1#
可以按如下方式聚合布尔值:
要处理不完整窗口中的NaN值,可以在类型转换之前使用适当的
fillna
,或者使用rolling
的min_periods
参数。这取决于要实现的逻辑。遗憾的是,在Pandas身上做不到这一点,除非创造出作为浮动的中间值。
tez616oj2#
这个方法没有实现,关闭,你需要的是使用
Rolling.apply
:这里最好使用strides-生成numpy二维数组并稍后处理:
这里第一个
NaN
sPandas值被省略了,可以添加第一个值进行处理,这里False
s:z9gpfhce3#