Если бы я хотел получить среднее из последних двух значений на основе столбца id
, я бы сделал следующее:
df['rolling_mean_2'] = df.groupby('id').apply(lambda x: x.rolling(2, min_periods=2).mean())
>> id value rolling_mean_2
0 b 1 NaN
1 b 3 2
2 d 5 NaN
3 d 7 6
Правильно, просто.Хорошо, теперь давайте скажем, что мой идентификатор находится в форме списка с 4 уникальными значениями (a, b, c, d)
x = [{'id': ['a','b','d'], 'value':1},
{'id': ['b','a','d'], 'value':3},
{'id': ['b','a','d'], 'value':5},
{'id': ['a','b','c'], 'value':7}]
df = pd.DataFrame(x)
Теперь, как бы я получил среднее значение изпоследние 2 значения (включая текущую строку) на основе уникального значения, которое содержится в списке?Таким образом, мой ожидаемый результат будет следующим:
Я собираюсь использовать переменные a и d , чтобы сохранить порядок и простоту.
>> id value a_rolling_mean_2 d_rolling_mean_2
0 [a, b, d] 1 NaN NaN
1 [b, a, d] 3 2 2
2 [b, a, d] 5 4 4
3 [a, b, c] 7 6 NaN