我有一个数据框和一个序列,该数据框是每个受访者的成本基础数据,而序列是应乘以基础数据的折现率。
例如,基础数据是(dataframe):
cost1 cost2
John 100 50
Tom 50 100
Andy 50 200
Mark 80 300
,折扣数据为(系列):
John 0.7
Tom 0.6
Andy 0.9
Mark 0.5
因此,所需的输出是:
cost1 cost2
John 70 35
Tom 30 60
Andy 45 180
Mark 40 150
我想出的方法是:
customer_list = base.index.tolist()
for k in customer_list:
base.loc[k] = base.loc[k]*discount.loc[k]
这有效(给了我想要的输出),但是我觉得效率很低。在我的实际应用中,数据帧非常大,因此运行此类迭代需要花费大量时间。
对有效计算有何建议?我认为可能存在一些使用索引进行整体计算的有效方法。 (基数*折扣当然还是行不通的...)
提前谢谢!
答案 0 :(得分:1)
将mul
与axis
参数一起使用:
df.mul(df2, axis=0)
cost1 cost2
John 70.0 35.0
Tom 30.0 60.0
Andy 45.0 180.0
Mark 40.0 150.0