Условное умножение на основе значения столбца в Pandas - PullRequest
0 голосов
/ 30 октября 2018

У меня есть следующий фрейм данных:

index  client year  value
  1      A    2011    5
  2      A    2012    10
  ...
  8      A    2018    7
  9      B    2011    14
  10     B    2012    54
  ...
  ...    Z    2011    5

Мне нужно умножить значения, используя значения, зависящие от года. У меня есть серия следующим образом:

2011  2
2012  2.5
2013  3
2014  3.5
...
2018  5.5

Мне нужно, чтобы для всех лет значения умножались на эти зависящие от года значения. Например. это будет выглядеть как

index  client year  value
  1      A    2011    10
  2      A    2012    25
 ...etc

Я написал цикл, чтобы сделать это сейчас, но он далеко не элегантен и эффективен. Как сделать это качественно и элегантно?

Ответы [ 2 ]

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

Если ваша серия выглядит так:

>>> s
0
2011    2.0
2012    2.5
2013    3.0
2014    3.5
2018    5.5
Name: 1, dtype: float64

Тогда вы можете сделать это, используя map:

df['value'] = df['value'].mul(df.year.map(s))

И вы получите:

>>> df
   index client  year  value
0      1      A  2011   10.0
1      2      A  2012   25.0
2      8      A  2018   38.5
3      9      B  2011   28.0
4     10      B  2012  135.0
....
0 голосов
/ 30 октября 2018

Использование reindex

df.value*=s.reindex(df.year).values
df
Out[44]: 
   index client  year  value
0      1      A  2011   10.0
1      2      A  2012   25.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...