用于递归数据的熊猫

时间:2018-02-01 15:25:49

标签: python pandas

enter image description here

如何创建一个数据框,其中第一个单元格与后续单元格具有不同的pandas公式?

从上面可以看出,Ave Gain的第一个单元格只是前两个增益的平均值:(1.84 + 0)/ 2 = 0.92。类似地,对于Ave Loss的第一个单元:(0.07 + 0)/ 2 = 0.035

然而,Ave Gain的第二个单元是先前的Ave Gain(0.92)+新的增益(1.62)除以2:(0.92 + 1.62)/ 2 = 1.27

并且第三个单元格是之前的Ave Gain(1.27)+新增益(1.61)除以2:=(1.27 + 1.61)/ 2 = 1.44

1)我应该如何创建第一个单元格与后续单元格具有不同公式的数据框?

2)如何为Ave Gain创建一个递归表(它使用自己以前的值来计算下一个值)

谢谢

1 个答案:

答案 0 :(得分:0)

似乎原始方式无法正常工作,所以我更新了这个答案。它的工作方式实际上比第一个更简单,更合乎逻辑。

<强> CODE

print(link?.absoluteString ?? "") /*www.XYZ.com/2018/02/01/thumbnails/Source-01-February-2018-20:00.jpg*/

<强>输出

import pandas as pd


x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a=pd.DataFrame(x)
a['Avg'] = [0 for m in x]
a['Avg'] = [sum(a[:i+1][0])/(i+1) for i, m in enumerate(a[0])]

print(a)

由于它与循环的工作方式不同,当你是当前行的计算值时,你不能引用前一行的值,它就不存在了。因此,您需要将计算完全基于您拥有的数据。使用 0 Avg 0 1 1.0 1 2 1.5 2 3 2.0 3 4 2.5 4 5 3.0 5 6 3.5 6 7 4.0 7 8 4.5 8 9 5.0 9 10 5.5 ,您可以引用list-comprehension中元素的索引,它允许随时引用enumeration元素的子列表,并对该列表进行计算以模拟先前的值行。

以下问题的一些答案用于实现此目的:

Adding calculated column(s) to a dataframe in pandas

Getting index of item while processing a list using map in python