首页 文章

对数据帧pandas列中的列表执行计算

提问于
浏览
1

我有以下数据框:

Position        A           B   
0   29644164       71.0    [31, 38, 1, 1]   
1   45861974       45.0    [17, 26, 1, 1]   
2   58142396       69.0    [37, 31, 0, 1]   
3   41223046       75.0    [21, 53, 0, 1]

我想对B列进行计算 . 我想在最后两个位置对2个数字求和,并将它们除以所有4个数字的总和 . 然后,将结果添加到新列'calc'

所以我期待的数据框将是:

Position        A           B          calc
0   29644164       71.0    [3, 5, 1, 1]     0.2
1   45861974       45.0    [2, 2, 1, 1]     0.333
2   58142396       69.0    [3, 7, 0, 1]     0.1
3   41223046       75.0    [3, 2, 0, 1]     0.2

我该怎么做?

1 回答

  • 2

    使用列表理解:

    df['calc'] = [sum(x[-2:]) / sum(x) for x in df.B]
    print (df)
       Position     A               B      calc
    0  29644164  71.0  [31, 38, 1, 1]  0.028169
    1  45861974  45.0  [17, 26, 1, 1]  0.044444
    2  58142396  69.0  [37, 31, 0, 1]  0.014493
    3  41223046  75.0  [21, 53, 0, 1]  0.013333
    

    Details

    print ([sum(x[-2:]) for x in df.B])
    [2, 2, 1, 1]
    
    print ([sum(x) for x in df.B])
    [71, 45, 69, 75]
    

相关问题