Python 函数的集合列表。ValueError:没有结果

Python 函数的集合列表。ValueError:没有结果,python,pandas,aggregate,rolling-computation,Python,Pandas,Aggregate,Rolling Computation,滚动后的聚合方法不适用于函数列表 此代码引发一个Valueerror df = pd.DataFrame({'col1':range(3), 'date':pd.date_range('2018-01-01', '2018-01-03')}) df.rolling('6D', min_periods=1, on='date', closed='left').agg([sum]) 但是这段代码对于一个函数来说效果很好 df.rolling('6D', min_periods=1, on='dat

滚动后的聚合方法不适用于函数列表

此代码引发一个Valueerror

df = pd.DataFrame({'col1':range(3), 'date':pd.date_range('2018-01-01', '2018-01-03')})
df.rolling('6D', min_periods=1, on='date', closed='left').agg([sum])
但是这段代码对于一个函数来说效果很好

df.rolling('6D', min_periods=1, on='date', closed='left').agg(sum)
错误文本:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-389-91b03860c0e6> in <module>
----> 1 df.rolling('6D', min_periods=1, on='date', closed='left').agg([sum])

~/anaconda3/lib/python3.7/site-packages/pandas/core/window.py in aggregate(self, arg, *args, **kwargs)
   1683     @Appender(_shared_docs['aggregate'])
   1684     def aggregate(self, arg, *args, **kwargs):
-> 1685         return super(Rolling, self).aggregate(arg, *args, **kwargs)
   1686 
   1687     agg = aggregate

~/anaconda3/lib/python3.7/site-packages/pandas/core/window.py in aggregate(self, arg, *args, **kwargs)
    310 
    311     def aggregate(self, arg, *args, **kwargs):
--> 312         result, how = self._aggregate(arg, *args, **kwargs)
    313         if result is None:
    314             return self.apply(arg, raw=False, args=args, kwargs=kwargs)

~/anaconda3/lib/python3.7/site-packages/pandas/core/base.py in _aggregate(self, arg, *args, **kwargs)
    557             return self._aggregate_multiple_funcs(arg,
    558                                                   _level=_level,
--> 559                                                   _axis=_axis), None
    560         else:
    561             result = None

~/anaconda3/lib/python3.7/site-packages/pandas/core/base.py in _aggregate_multiple_funcs(self, arg, _level, _axis)
    615         # if we are empty
    616         if not len(results):
--> 617             raise ValueError("no results")
    618 
    619         try:

ValueError: no results
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
---->1 df.滚动('6D',最小周期=1,日期,'date',结束,'left')。累计([sum])
聚合中的~/anaconda3/lib/python3.7/site-packages/pandas/core/window.py(self、arg、*args、**kwargs)
1683@Appender(_shared_docs['aggregate'))
1684 def聚合(自身、arg、*args、**kwargs):
->1685返回超级(滚动,自)。聚合(arg,*args,**kwargs)
1686
1687 agg=骨料
聚合中的~/anaconda3/lib/python3.7/site-packages/pandas/core/window.py(self、arg、*args、**kwargs)
310
311 def聚合(自身、arg、*args、**kwargs):
-->312结果,how=self.\聚合(arg、*args、**kwargs)
313如果结果为无:
314返回self.apply(arg,raw=False,args=args,kwargs=kwargs)
聚合中的~/anaconda3/lib/python3.7/site-packages/pandas/core/base.py(self、arg、*args、**kwargs)
557返回自聚集函数(参数,
558 _级别=_级别,
-->559 _轴=_轴),无
560其他:
561结果=无
~/anaconda3/lib/python3.7/site-packages/pandas/core/base.py在聚合函数(self、arg、level、axis)中
615#如果我们是空的
616如果不是len(结果):
-->617提高值错误(“无结果”)
618
619尝试:
ValueError:没有结果

我找到了一个解决办法。我不知道为什么,但在这种情况下,我们需要使用日期列作为索引

df.set_index('date').rolling('6D', min_periods=1, closed='left').agg(['sum','max'])
结果

           col1     
            sum  max
date                
2018-01-01  NaN  0.0
2018-01-02  0.0  1.0
2018-01-03  1.0  2.0

你可以用一个
dict
instead,我认为它只是一个窗口=一个函数,就像任何其他窗口实现一样(至少是我所知道的那些)。有趣的是,使用dict尝试解决方案时,我得到了
分段错误
错误,而我的python会话是killed@GrzegorzSkibinski
pandas.core.window.Rolling.aggregate的文档声明函数列表是一个合法参数。当我不使用句点作为窗口时,函数列表也可以正常工作。示例
df[['col1']].rolling(2).agg([sum,max])
@lostCode您能否提供一个解决方案。我尝试了
df.rolling('6D',min_periods=1,on='date',closed='left').agg({'col1':[sum,max]})
但是得到了另一个例外,两者都必须在col1中?你能再创建一个专栏吗