使用前一行的Pandas功能计算

时间:2017-04-15 18:26:32

标签: python pandas

带有一个输入列的数据框。我想添加另一个Out列,将输入行乘以0.5 +(前一行Out值+ 1)。我尝试过班次,但认为我遗漏了一些基本的东西。

输入数据帧:

df
Out[11]: 
   Input  
0     10  
1     20  
2     30  
3     20  
4     30  
5      0  
6     10  
7     20  

输出数据帧:

df
Out[11]: 
   Input  Out
0     10    5
1     20   16
2     30   32
3     20   43
4     30   59
5      0   60
6     10   66
7     20   77

3 个答案:

答案 0 :(得分:2)

df.assign(Out=df.Input.cumsum() / 2 + np.arange(len(df)))

   Input   Out
0     10   5.0
1     20  16.0
2     30  32.0
3     20  43.0
4     30  59.0
5      0  60.0
6     10  66.0
7     20  77.0

答案 1 :(得分:2)

这是解决这个问题的一个小技巧:

>>> digits = list(str(2017))
>>> digits
['2', '0', '1', '7']

输入数据帧:

int(digits[0])

在这种情况下你真正做的是运行累积和的变体,我们可以按如下方式建模:

import pandas as pd

df = pd.DataFrame({'input':[10,20,30,20,30,0,10,20]})

print(df)

输出结果:

   input
0     10
1     20
2     30
3     20
4     30
5      0
6     10
7     20

答案 2 :(得分:1)

您将错过0索引的值,因为此处没有'Out'值。

df['Input'] * 0.5 + (df['Out'].shift(1) + 1)
Out[24]: 
0     NaN
1    16.0
2    32.0
3    43.0
4    59.0
5    60.0
6    66.0
7    77.0
dtype: float64