【问题标题】:pandas most efficient way to execute arithmetic operations on multiple dataframe columnspandas 在多个数据帧列上执行算术运算的最有效方法
【发布时间】:2020-08-28 09:30:55
【问题描述】:

我的第一篇文章! 我在 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”中的值替换为除法的结果。于是上面的dataframe就变成了:

    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 循环来完成上述操作?

谢谢, 马克

【问题讨论】:

    标签: python pandas dataframe jupyter


    【解决方案1】:

    差不多了,使用divaxis=0

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

    【讨论】:

    • 编辑它,因为 OP 想要除法,而不是减法。
    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 2021-11-02
      • 2019-12-10
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多