首页 文章

Python:将函数应用于DataFrame,从新计算列中获取输入

提问于
浏览
0

我面临将功能应用于DataFrame的问题(根据年度每小时天气数据建模太阳能收集器)

假设我有以下(简化)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 回答

  • 1

    你在找这个吗?
    您可以使用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]
    
  • 0

    这听起来像是在计算累计金额 . 在这种情况下,请使用 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]
    

相关问题