Предположим, у меня есть следующий фрейм данных:
date sku Q f
0 2019-10-23 1101692 10.000 001
1 2019-10-24 1101692 10.000 002
2 2019-10-23 1101692 15.000 007
3 2019-10-22 1101692 -10.000 100
4 2019-10-23 1101692 -10.000 100
5 2019-10-23 1101692 -15.000 100
6 2019-10-21 1101692 600.000 100
Используя эту команду groupby, чтобы получить последнее значение по группе:
df.groupby(['sku', 'f']).last()
Я получил:
data q
sku f
1101692 001 2019-10-23 10.000
002 2019-10-24 10.000
007 2019-10-23 15.000
100 2019-10-21 600.000
Я пытаюсь создать новый столбец, который будет иметь значения столбца 'q' (последние значения каждой группы).
Ожидаемый результат:
date sku Q f New_column
0 2019-10-23 1101692 10.000 001 10.000
1 2019-10-24 1101692 10.000 002 10.000
2 2019-10-23 1101692 15.000 007 15.000
3 2019-10-22 1101692 -10.000 100 NaN
4 2019-10-23 1101692 -10.000 100 NaN
5 2019-10-23 1101692 -15.000 100 NaN
6 2019-10-21 1101692 600.000 100 600.000
Что является хорошим подходом для создания этой новой колонки. Я попытался использовать iloc, но это кажется уловкой.
Затем я попытался использовать
df['new_column'] = df.groupby(['sku', 'f'])['q'].apply(lambda x: x.index[0])
, но это не сработало.