我有一个看起来像这样的数据框
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
关于python - 迭代 Pandas 列并在每次迭代中计算新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068007/