草庐IT

rolling-sum

全部标签

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 - 在 numpy.sum() 或 mean() 之前高效的 numpy.roll

我想研究几个(1000个数量级)形状为(1000,800,1024)的3D数组。我需要计算沿axis=0的平均值,但在此之前,我必须沿axis2滚动数据,直到它“位于正确的位置”。这听起来很奇怪,所以我会试着解释一下。形状为(1024,)的一维子数组是来自物理环形缓冲区的数据。环形缓冲区在不同的位置被读出,我知道。所以我有几个形状为(1000,800)的数组pos。告诉我在什么位置读取了环形缓冲区。我需要根据pos滚动形状为(1000,800,1024)的3D数组data。只有在滚动之后..3D阵列对我才有意义,我才能开始分析它们。在C中,可以编写非常简单的代码,所以我想知道我是否可以

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 - 如何在 Python 中对列表使用 sum() 函数?

我正在做作业,它要求我使用sum()和len()函数来查找输入数字列表的平均值,当我尝试使用sum()来获取列表的总和时,我收到错误类型错误:+不支持的操作数类型:“int”和“str”。以下是我的代码:numlist=input("Enteralistofnumberseparatedbycommas:")numlist=numlist.split(",")s=sum(numlist)l=len(numlist)m=float(s/l)print("mean:",m) 最佳答案 问题是当你从输入中读取时,你有一个字符串列表。你可以

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 - 为什么 groupby sum 不将 boolean 转换为 int 或 float?

我将从3个简单的示例开始:pd.DataFrame([[True]]).sum()01dtype:int64pd.DataFrame([True]).sum()01dtype:int64pd.Series([True]).sum()1所有这些都符合预期。这是一个更复杂的例子。df=pd.DataFrame([['a','A',True],['a','B',False],['a','C',True],['b','A',True],['b','B',True],['b','C',False],],columns=list('XYZ'))df.Z.sum()4也符合预期。但是,如果我grou

使用 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 - axis = 0 在 Numpy 的 sum 函数中做了什么?

我正在学习Python,遇到过numpy.sum。它有一个可选参数axis。此参数用于获取按列求和或按行求和。当axis=0时,我们暗示仅对列求和。例如,a=np.array([[1,2,3],[4,5,6]])np.sum(a,axis=0)这段代码产生输出:array([5,7,9]),很好。但如果我这样做:a=np.array([1,2,3])np.sum(a,axis=0)我得到结果:6,这是为什么?我不应该得到array([1,2,3])吗? 最佳答案 如果有人需要这个视觉描述:

Python 相当于 sum() 使用 xor()

我喜欢Python求和函数:>>>z=[1]*11>>>zsum=sum(z)>>>zsum==11True我想要使用异或(^)而不是加(+)的相同功能。我想用map。但我不知道该怎么做。有什么提示吗?我对此不满意:defxor(l):r=0forvinl:r^=vreturnv我想要一个使用map的1类轮。提示? 最佳答案 zxor=reduce(lambdaa,b:a^b,z,0)importoperatorzxor=reduce(operator.xor,z,0) 关于Python

python - 为什么 numpy sum 比 + 运算符慢 10 倍?

我很奇怪地注意到,np.sum比手写求和慢10倍。带轴的np.sum:p1=np.random.rand(10000,2)deftest(p1):returnp1.sum(axis=1)%timeittest(p1)186µs±4.21µsperloop(mean±std.dev.of7runs,1000loopseach)没有轴的np.sum:p1=np.random.rand(10000,2)deftest(p1):returnp1.sum()%timeittest(p1)17.9µs±236nsperloop(mean±std.dev.of7runs,10000loopseach