Я пытаюсь найти наилучший способ применения функции к группам в пределах кадра данных Pandas, где функция зависит от группы.Применить групповую функцию к группам в Pandas
Скажем, у меня есть следующий dataframe:
>>> df=pd.DataFrame(np.random.randint(50,200,9), columns=['Value'])
>>> df['Year']=[2001,2002,2003]*3
>>> df['Location']=['A','A','A','B','B','B','C','C','C']
>>> df.set_index(['Location','Year'], inplace=True)
>>> df
Value
Location Year
A 2001 134
2002 162
2003 108
B 2001 59
2002 52
2003 124
C 2001 148
2002 162
2003 66
>>>
И что у меня есть следующий словарь значений, характерных для каждого года:
>>> YearDict={2001:1.3, 2002:1.2, 2003:1.1}
>>> YearDict
{2001: 1.3, 2002: 1.2, 2003: 1.1}
Что бы лучший способ умножить ' Столбец «Значение» в моей базе данных по конкретному значению года в моем словаре?
В настоящее время я делаю что-то вроде этого:
>>> df.reset_index(inplace=True)
>>> def f(row):
... return row['Value']*YearDict[row['Year']]
...
>>>
>>> df.apply(f, axis=1)
0 84.5
1 210.0
2 201.3
3 248.3
4 94.8
5 177.1
6 140.4
7 218.4
8 68.2
dtype: float64
>>>
Является ли это лучший подход? Является ли их метод, который не требует сброса индекса dataframe?