pandas.DataFrame.mul在另一列上匹配

时间:2018-12-18 21:47:16

标签: python pandas dataframe

我有一个熊猫DataFrame(忽略DataFrame的索引)

    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

我想将DataFrame的Val列的每个元素与具有相同Ind值的系列元素相乘。我将如何处理? pandas.DataFrame.mul仅在索引上匹配,但我不想转换DataFrame。

1 个答案:

答案 0 :(得分:2)

看起来像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