我有一个熊猫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。
答案 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