带有一个输入列的数据框。我想添加另一个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
答案 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