Как эффективно умножить определенное значение для каждой строки в кадре данных Python - PullRequest
0 голосов
/ 24 октября 2018

У меня есть один фрейм данных и одна серия, фрейм данных - это базовые данные о стоимости для каждого респондента, а ряд - это ставка дисконта, которую следует умножить на базовые данные.

Например, базовые данные(фрейм данных):

      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]

Это работает (дает мне желаемый результат), но я чувствую, что это довольно неэффективно.В моем реальном приложении размер данных достаточно велик, поэтому для выполнения такой итерации требуется достаточно времени.

Есть предложения по эффективному вычислению?Я думаю, что может быть какой-то эффективный способ сделать такой расчет в целом, используя индекс.(базовая * скидка, конечно, не сработала ...)

спасибо заранее!

1 Ответ

0 голосов
/ 24 октября 2018

Используйте 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
...