猿问

pandas 在多个数据帧列上执行算术运算的最有效方法

我在 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 循环来更快地完成上述操作的方法?


喵喔喔
浏览 144回答 2
2回答

开满天机

差不多就这样,将div与 一起使用axis=0:df.iloc[:,1:] = df.iloc[:,1:].div(df.a, axis=0)

幕布斯7119047

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)
随时随地看视频慕课网APP

相关分类

Python
我要回答