代码之家  ›  专栏  ›  技术社区  ›  Rushabh Mehta

其他列上的pandas.dataframe.mul匹配

  •  0
  • Rushabh Mehta  · 技术社区  · 7 年前

    我有一个熊猫数据帧(忽略数据帧的索引)

        Tab  Ind  Com  Val
    4   BAS    1    1   10
    5   BAS    1    2    5
    6   BAS    2    1   20
    8   AIR    1    1    5
    9   AIR    1    2    2
    11  WTR    1    1    2
    12  WTR    2    1    1
    

    还有熊猫系列

    Ind
    1    1.208333
    2    0.857143
    dtype: float64
    

    我想将数据帧的val列的每个元素与具有相同ind值的序列元素相乘。我该如何处理?pandas.dataframe.mul只匹配索引,但我不想转换数据帧。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Yuca    7 年前

    看起来像 pandas.DataFrame.join 可以解决您的问题:

    temp = df.join(the_series,on='Ind', lsuffix='_orig')
    df['ans'] = temp.Val*temp.Ind
    

    产量

        Tab  Ind  Com  Val        ans
    4   BAS    1    1   10  12.083330
    5   BAS    1    2    5   6.041665
    6   BAS    2    1   20  17.142860
    8   AIR    1    1    5   6.041665
    9   AIR    1    2    2   2.416666
    11  WTR    1    1    2   2.416666
    12  WTR    2    1    1   0.857143
    

    或者使用更紧凑的语法实现相同目标的另一种方法( thanks W-B )

    df1['New']=df1.Ind.map(the_series).values*df1.Val