Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas同时对多个列执行计算_Python_Pandas - Fatal编程技术网

Python 使用pandas同时对多个列执行计算

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

我有一个超过一百万行的大数据框。当前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):
    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)