Skip to main content
 首页 » 编程设计

python之迭代 Pandas 列并在每次迭代中计算新列

2025年05月04日21unruledboy

我有一个看起来像这样的数据框

d = {'A': [10, 20, 30, 40], 'B': [20, 30, 40, 50],'C': [30, 40, 50, 60]} 
df = pd.DataFrame(data=d) 
 
    A        B       C 
    10       20      30   
    20       30      40  
    30       40      50     
    40       50      60 

我正在尝试构建一个循环,以便它使用一个复杂的公式创建三个新列(每次迭代一个),其中只有一个增加 10%,而其他两个在每次迭代中保持不变。

每次应用的公式为:sqrt(((A ** 2)*B)+((B ** 2)*C))

所以期望的输出是 -

    A        B       C      X_A      X_B       X_C 
    10       20      30     120.08   129.30    123.29 
    20       30      40     224.77   238.24    227.16 
    30       40      50     351.51   369.32    352.14 
    40       50      60     496.79   519.13    494.98 

实现此目标的最简单方法是什么?

请您参考如下方法:

你有两个问题。

第一个可能你没有意识到它。 您的数据数据类型是字符串。 我们需要先转换成int

df=df.astype(int) 

然后我们使用 div 和 add

pd.concat([df,df.div(10).add(df.sum(1),0).add_prefix('X_')],axis=1) 
Out[1082]:  
    A   B   C  X_A  X_B  X_C 
0  10  20  30   61   62   63 
1  20  30  40   92   93   94 
2  30  40  50  123  124  125 
3  40  50  60  154  155  156