Python:对DataFrame应用函数,使用新计算列的输入
我遇到了一个问题,想在一个数据表(用来根据每年每小时的天气数据建模一个太阳能收集器)上应用一个函数。
假设我有一个这样的(简化版的)数据表:
df2:
A B C
0 11 13 5
1 6 7 4
2 8 3 6
3 4 8 7
4 0 1 7
现在我定义了一个函数,这个函数会把所有行作为输入,来创建一个叫做 D 的新列。但是我希望这个函数还能把 D 列上面那一行的值(当然第一行没有 D 的值)作为输入。
def Funct(x):
D = x['A']+x['B']+x['C']+(x-1)['D']
我知道上面的函数不太好用,但它能大致表达我想要的效果。
总结一下:
创建一个函数,这个函数在数据表中生成一个新列,并且把新列上面一行的值作为输入。
有人能帮我吗?
提前谢谢大家。
2 个回答
0
你是在找这个吗?
你可以使用shift这个功能,把上一行的数据和当前行对齐,然后你就可以进行你的操作了。
In [7]: df
Out[7]:
a b
1 1 1
2 2 2
3 3 3
4 4 4
[4 rows x 2 columns]
In [8]: df['c'] = df['b'].shift(1) #First row will be Nan
In [9]: df
Out[9]:
a b c
1 1 1 NaN
2 2 2 1
3 3 3 2
4 4 4 3
[4 rows x 3 columns]
1
听起来你是在计算一个累积和。在这种情况下,可以使用 cumsum
:
In [45]: df['D'] = (df['A']+df['B']+df['C']).cumsum()
In [46]: df
Out[46]:
A B C D
0 11 13 5 29
1 6 7 4 46
2 8 3 6 63
3 4 8 7 82
4 0 1 7 90
[5 rows x 4 columns]