Python:对DataFrame应用函数,使用新计算列的输入

0 投票
2 回答
615 浏览
提问于 2025-04-18 01:20

我遇到了一个问题,想在一个数据表(用来根据每年每小时的天气数据建模一个太阳能收集器)上应用一个函数。

假设我有一个这样的(简化版的)数据表:

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]

撰写回答