我有一个超过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)
我想知道是否还有另一种方法可以实现相同的目标?这种当前的方法很好,但是要花很多时间才能运行,并且对于某些操作会产生奇怪的结果。谢谢。
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] 删除。
我来说两句