Python 使用pandas同时对多个列执行计算
我有一个超过一百万行的大数据框。当前df只有X、a、b、c列。我想执行一个计算,生成新的列:new_a,new_b,new_c(见图) 计算结果为:新的_a=a/(X^2) 我已经有了用python实现的方法:Python 使用pandas同时对多个列执行计算,python,pandas,Python,Pandas,我有一个超过一百万行的大数据框。当前df只有X、a、b、c列。我想执行一个计算,生成新的列:new_a,new_b,new_c(见图) 计算结果为:新的_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): f
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)
我想知道是否还有其他方法可以达到同样的目标?目前的这种方法很好,但运行起来需要很多时间,而且在某些操作中会产生奇怪的结果。多谢各位
Pandas对每一列执行索引对齐的除法,然后将结果连接起来。要a/X^2还是a/X?你要求一个,但你的例子显示了另一个
for col in col_list:
new_col = 'new_' + col
df[new_col] = df[col] / (df['X']**2)
如果您实际需要的是a/X,则会给出您所要求的结果。这些示例结果正确吗?你说你想要新的_a=a/(X^2)。在第一行中,a是3,X是5,那么new_a不应该是0.12而不是0.6吗?
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
for col in col_list:
new_col = 'new_' + col
df[new_col] = df[col] / (df['X']**2)