草庐IT

dispatch_apply

全部标签

python - 当系列包含集合时,为什么我的 pandas rolling().apply() 不起作用?

我有一个pandas系列,其中每个单元格都是一个元组。我正在尝试对该系列执行rolling().apply()操作,而我尝试应用的函数从未被调用过。这是一个愚蠢的例子,说明了我在说什么:>>>importpandasaspd>>>pd.__version__u'0.18.0'>>>die=lambdax:0/0>>>s=pd.Series(zip(range(5),range(5)))>>>s0(0,0)1(1,1)2(2,2)3(3,3)4(4,4)dtype:object一个简单的apply按预期工作,因为函数被调用:>>>s.apply(die)[...]ZeroDivision

python - Pandas groupby 和 rolling_apply 忽略 NaN

我有一个pandas数据框,我想计算列的滚动平均值(在groupby子句之后)。但是,我想排除NaN。例如,如果groupby返回[2,NaN,1],则结果应为1.5,而当前它返回NaN。我尝试了以下方法,但似乎不起作用:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambdax:np.mean([iforiinxifiisnotnp.nanandi!='NaN']))如果我什至尝试这样做:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambd

python - 如何使用天数作为 pandas rolling_apply 函数的窗口

我有一个日期间隔不规则的Pandas数据框。有没有办法用7天作为移动窗口来计算medianabsolutedeviation,中位数等..?我觉得我可以以某种方式使用pandas.rolling_apply但它不会为window参数采用不规则间隔的日期。我找到了类似的帖子https://stackoverflow.com/a/30244019/3128336并且我正在尝试创建我的自定义函数,但仍然无法弄清楚..任何人都可以帮忙吗?importpandasaspdfromdatetimeimportdatetimeperson=['A','B','C','B','A','C','A','

python - 如何在不添加额外索引的情况下使用 Pandas groupby apply()

我经常想通过组合分组DataFrame的多个列来创建一个新的DataFrame。apply()函数允许我这样做,但它要求我创建一个不需要的索引:In[359]:df=pandas.DataFrame({'x':3*['a']+2*['b'],'y':np.random.normal(size=5),'z':np.random.normal(size=5)})In[360]:dfOut[360]:xyz0a0.201980-0.4703881a0.190846-2.0890322a-1.1310100.2278593b-0.263865-1.9065754b-1.335956-0.722

使用 rolling_apply 的 Python 自定义函数用于 pandas

我想使用pandas.rolling_apply函数在滚动窗口的基础上应用我自己的自定义函数。但是我的函数需要两个参数,并且还有两个输出。这可能吗?下面是一个最小的可重现示例...importpandasaspdimportnumpyasnpimportrandomtmp=pd.DataFrame(np.random.randn(2000,2)/10000,index=pd.date_range('2001-01-01',periods=2000),columns=['A','B'])defgm(df,p):v=(((df+1).cumprod())-1)*preturnv.iloc[

python - 如何将多个参数传递给 apply 函数

我有一个名为counting的方法,它有两个参数。我需要使用apply()方法调用此方法。但是,当我将这两个参数传递给apply方法时,出现以下错误:TypeError:counting()takesexactly2arguments(1given)我看到了以下帖子pythonpandas:applyafunctionwithargumentstoaseries.Update而且我不想使用functool.partial,因为我不想导入其他类来传递参数。defcounting(dic,strWord):ifstrWordindic:returndic[strWord]else:retu

python pool apply_async 和 map_async 不会在完整队列上阻塞

我是python的新手。我正在使用multiprocessing模块读取stdin上的文本行,以某种方式转换它们并将它们写入数据库。这是我的代码片段:batch=[]pool=multiprocessing.Pool(20)i=0fori,contentinenumerate(sys.stdin):batch.append(content)iflen(batch)>=10000:pool.apply_async(insert,args=(batch,i+1))batch=[]pool.apply_async(insert,args=(batch,i))pool.close()pool.

多个数组的Python apply_along_axis

如果我有一个函数f(x),它接受一个一维数组作为参数并生成一个一维数组作为输出,我可以使用numpy.apply_along_axis将函数应用于二维数组X的每一行,其行是f的有效参数。现在我想用一个带有两个参数的函数来做类似的事情。例如。我有一个函数f(x,y),它将两个一维数组作为参数,我还有两个二维数组X、Y,它们都有n行。我想将f应用于每一对行,生成一个又包含n行的数组。如何以高效的方式实现这一目标?我也对变体感兴趣,其中f接受更多参数或涉及更高维数组:例如f可以取3个形状为(2,2)的数组x,y,z;(3,);(5,)并产生形状(4,4)的结果。我有X、Y、Z形状(50,10

python - 从 pandas.rolling_apply 返回两个值

我正在使用pandas.rolling_apply将数据拟合到分布并从中获取值,但我还需要它报告滚动拟合优度(特别是p值)。目前我是这样做的:deffunc(sample):fit=genextreme.fit(sample)returngenextreme.isf(0.9,*fit)defp_value(sample):fit=genextreme.fit(sample)returnkstest(sample,'genextreme',fit)[1]values=pd.rolling_apply(data,30,func)p_values=pd.rolling_apply(data,

python - 如何在 Django URLpatterns 中根据请求方法分派(dispatch)?

很清楚如何创建从URL正则表达式调度的URLPattern:(r'^books/$',books),books可以根据请求方法进一步发送:defbooks(request):ifrequest.method=='POST':...else:...我想知道是否有一种惯用的方法将请求方法包含在URLPattern中,将所有调度/路由信息保存在一个位置,例如:(r'^books/$',GET,retrieve-book),(r'^books/$',POST,update-books),(r'^books/$',PUT,create-books), 最佳答案