pandas 对多个数据框列执行算术运算的最有效方式

pandas most efficient way to execute arithmetic operations on multiple dataframe columns

我的第一个 post! 我在 jupyter 笔记本上是 运行 python 3.8.5 & pandas 1.1.0。

我想用同一数据帧的另一列中的相应元素划分几列。 例如:

import pandas as pd
df = pd.DataFrame({'a': [2, 3, 4], 'b': [4, 6, 8], 'c':[6, 9, 12]})
df
    a   b   c
0   2   4   6
1   3   6   9
2   4   8   12

我想将 'b' 和 'c' 列除以 'a' 中的相应值,并将 'b' 和 'c' 中的值替换为这个划分的结果。所以上面的数据框变成:

    a   b   c
0   2   2   3
1   3   2   3
2   4   2   3

我试过了

df.iloc[: , 1:] = df.iloc[: , 1:] / df['a']

但这给出了:

    a   b   c
0   2   NaN NaN
1   3   NaN NaN
2   4   NaN NaN

我通过以下方式让它工作:

for colname in df.columns[1:]:
    df[colname] = (df[colname] / df['a'])

有没有更快的方法来避免 for 循环?

谢谢, 马克

差不多了,使用 divaxis=0:

df.iloc[:,1:] = df.iloc[:,1:].div(df.a, axis=0)
df.b= df.b/df.a
df.c=df.c/df.a

df[['b','c']]=df.apply(lambda x: x[['b','c']]/x.a ,axis=1)