用熊猫一次对多列进行计算

爱丽丝漫游仙境

我有一个超过100万行的大数据框。当前df只有X,a,b,c列。我想执行产生新列的计算:new_a,new_b,new_c(请参见图片)

计算公式为:new_a = a /(X ^ 2)

我已经有办法在python中做到这一点:

col_list = ['a','b','c']

def new(col,X):
    score = col/(X**2)
    return score

new_col = ['new_a','new_b','new_c']

def calculate(df):
    for i in range(len(new_col)):
        df[new_col[i]] = df.apply(lambda row: new(row[col_list[i]],row['X']),axis=1)

calculate(df)

我想知道是否还有另一种方法可以实现相同的目标?这种当前的方法很好,但是要花很多时间才能运行,并且对于某些操作会产生奇怪的结果。谢谢。

在此处输入图片说明

cs95
col_list = ['a','b','c']
df = pd.concat(
    [df, df[col_list].div(df['X'] ** 2, axis=0).add_prefix('new_')], axis=1
)

df
   X  a  b  c     new_a     new_b     new_c
0  5  3  4  5  0.120000  0.160000  0.200000
1  7  2  4  2  0.040816  0.081633  0.040816

Pandas在每一列上执行索引对齐的除法,然后将结果串联起来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章