我在 jupyter 笔记本上运行 python 3.8.5 和 pandas 1.1.0。我想将多个列除以同一数据帧的另一列中的相应元素。例如:import pandas as pddf = pd.DataFrame({'a': [2, 3, 4], 'b': [4, 6, 8], 'c':[6, 9, 12]})df a b c0 2 4 61 3 6 92 4 8 12我想将列“b”和“c”除以“a”中的相应值,并用该除法的结果替换“b”和“c”中的值。所以上面的数据框变成: a b c0 2 2 31 3 2 32 4 2 3我试过df.iloc[: , 1:] = df.iloc[: , 1:] / df['a']但这给出了: a b c0 2 NaN NaN1 3 NaN NaN2 4 NaN NaN我通过执行以下操作使其工作:for colname in df.columns[1:]: df[colname] = (df[colname] / df['a'])是否有通过避免 for 循环来更快地完成上述操作的方法?
2 回答

幕布斯7119047
TA贡献1794条经验 获得超8个赞
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)
添加回答
举报
0/150
提交
取消