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

标签 python pandas for-loop

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

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)

然后我们使用 divadd

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

关于python - 迭代 Pandas 列并在每次迭代中计算新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068007/

相关文章:

python - 从数据帧创建句子(行)到 POS 标签计数(列)矩阵

python - 将对象保留在内存中并避免重新加载 pickle

python - 计算 pandas 中不重要的行数

ios - 尝试在 iOS 的 for 循环内动态创建和填充两个 View

python - 如果组包含空列,则删除行

python - 在 python 中,如何找到单词中的元音?

python - Nans on pd.factorize 返回对象

python - 在 Pandas 的多索引数据帧上使用滚动函数

python - 如何在Python中的一列中显示不同位数的小数

Javascript for 循环只运行两次