Как получить только последнее значение за день?
Пример входных данных csv:
,ammount,time,currency
0,1470.01,2020-01-02 00:00:00,Евро
1,2530.01,2020-01-02 06:01:00,Доллар
2,1840.01,2020-01-02 18:25:00,Евро
3,1400.01,2020-01-03 00:00:00,Евро
4,2270.01,2020-01-03 04:16:00,Евро
5,-639.99,2020-01-03 10:02:00,Рубль
6,1900.01,2020-01-04 00:00:00,Рубль
7,1920.01,2020-01-04 08:49:00,Рубль
8,-429.99,2020-01-04 18:23:00,Доллар
9,2400.01,2020-01-05 00:00:00,Доллар
10,970.01,2020-01-05 06:50:00,Доллар
11,640.01,2020-01-05 15:14:00,Евро
12,2130.01,2020-01-06 00:00:00,Евро
13,1790.01,2020-01-06 00:40:00,Евро
14,-2909.99,2020-01-06 04:42:00,Рубль
15,1430.01,2020-01-07 00:00:00,Доллар
16,-1849.99,2020-01-07 02:04:00,Доллар
17,2440.01,2020-01-07 08:09:00,Доллар
18,1590.01,2020-01-08 00:00:00,Евро
19,2260.01,2020-01-08 18:21:00,Евро
20,-2479.99,2020-01-08 20:08:00,Рубль
21,910.01,2020-01-09 00:00:00,Доллар
22,1300.01,2020-01-09 00:32:00,Доллар
23,-1839.99,2020-01-09 19:01:00,Доллар
24,1640.01,2020-01-10 00:00:00,Рубль
25,1940.01,2020-01-10 05:22:00,Рубль
26,-2539.99,2020-01-10 18:54:00,Доллар
27,2250.01,2020-01-11 00:00:00,Доллар
28,2120.01,2020-01-11 13:56:00,Евро
29,1610.01,2020-01-11 22:40:00,Доллар
30,2950.01,2020-01-12 00:00:00,Евро
31,-649.99,2020-01-12 05:12:00,Рубль
32,1910.01,2020-01-12 09:30:00,Евро
33,890.01,2020-01-13 00:00:00,Рубль
34,850.01,2020-01-13 05:44:00,Рубль
35,-1779.99,2020-01-13 17:18:00,Рубль
36,1540.01,2020-01-14 00:00:00,Евро
37,-2279.99,2020-01-14 11:28:00,Евро
38,960.01,2020-01-14 11:50:00,Евро
39,810.01,2020-01-15 00:00:00,Доллар
40,-3879.99,2020-01-15 10:32:00,Доллар
41,1260.01,2020-01-15 19:11:00,Доллар
42,2960.01,2020-01-16 00:00:00,Евро
43,500.01,2020-01-16 12:50:00,Евро
44,-2479.99,2020-01-16 22:54:00,Доллар
45,940.01,2020-01-17 00:00:00,Евро
46,-3019.99,2020-01-17 05:35:00,Доллар
47,1010.01,2020-01-17 19:21:00,Евро
48,520.01,2020-01-18 00:00:00,Рубль
49,2060.01,2020-01-18 18:48:00,Рубль
Необходимо для каждой отдельной даты для каждый валюты оставить только последнее значение ammount.
То есть, для каждой валюты должно остаться только последнее значение за день:
,ammount,time,currency
0,2530.01,2020-01-02 06:01:00,Доллар
1,1840.01,2020-01-02 18:25:00,Евро
2,2270.01,2020-01-03 04:16:00,Евро
3,-639.99,2020-01-03 10:02:00,Рубль
4,1920.01,2020-01-04 08:49:00,Рубль
5,-429.99,2020-01-04 18:23:00,Доллар
6,970.01,2020-01-05 06:50:00,Доллар
7,640.01,2020-01-05 15:14:00,Евро
8,1790.01,2020-01-06 00:40:00,Евро
9,-2909.99,2020-01-06 04:42:00,Рубль
10,2440.01,2020-01-07 08:09:00,Доллар
11,2260.01,2020-01-08 18:21:00,Евро
12,-2479.99,2020-01-08 20:08:00,Рубль
13,-1839.99,2020-01-09 19:01:00,Доллар
14,1940.01,2020-01-10 05:22:00,Рубль
15,-2539.99,2020-01-10 18:54:00,Доллар
16,2120.01,2020-01-11 13:56:00,Евро
17,1610.01,2020-01-11 22:40:00,Доллар
18,-649.99,2020-01-12 05:12:00,Рубль
19,1910.01,2020-01-12 09:30:00,Евро
20,-1779.99,2020-01-13 17:18:00,Рубль
21,960.01,2020-01-14 11:50:00,Евро
22,1260.01,2020-01-15 19:11:00,Доллар
23,500.01,2020-01-16 12:50:00,Евро
24,-2479.99,2020-01-16 22:54:00,Доллар
25,-3019.99,2020-01-17 05:35:00,Доллар
26,1010.01,2020-01-17 19:21:00,Евро
27,2060.01,2020-01-18 18:48:00,Рубль
Подскажите пожалуйста, как сделать?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Попробуйте так:
res = (df
.groupby([pd.Grouper(key="time", freq="D"), "currency"],
as_index=False, group_keys=False)
.apply(lambda x: x.nlargest(1, ["time"])))
результат:
In [214]: res
Out[214]:
ammount time currency
1 2530.01 2020-01-02 06:01:00 Доллар
2 1840.01 2020-01-02 18:25:00 Евро
4 2270.01 2020-01-03 04:16:00 Евро
5 -639.99 2020-01-03 10:02:00 Рубль
8 -429.99 2020-01-04 18:23:00 Доллар
7 1920.01 2020-01-04 08:49:00 Рубль
10 970.01 2020-01-05 06:50:00 Доллар
11 640.01 2020-01-05 15:14:00 Евро
13 1790.01 2020-01-06 00:40:00 Евро
14 -2909.99 2020-01-06 04:42:00 Рубль
17 2440.01 2020-01-07 08:09:00 Доллар
19 2260.01 2020-01-08 18:21:00 Евро
20 -2479.99 2020-01-08 20:08:00 Рубль
23 -1839.99 2020-01-09 19:01:00 Доллар
26 -2539.99 2020-01-10 18:54:00 Доллар
25 1940.01 2020-01-10 05:22:00 Рубль
29 1610.01 2020-01-11 22:40:00 Доллар
28 2120.01 2020-01-11 13:56:00 Евро
32 1910.01 2020-01-12 09:30:00 Евро
31 -649.99 2020-01-12 05:12:00 Рубль
35 -1779.99 2020-01-13 17:18:00 Рубль
38 960.01 2020-01-14 11:50:00 Евро
41 1260.01 2020-01-15 19:11:00 Доллар
44 -2479.99 2020-01-16 22:54:00 Доллар
43 500.01 2020-01-16 12:50:00 Евро
46 -3019.99 2020-01-17 05:35:00 Доллар
47 1010.01 2020-01-17 19:21:00 Евро
49 2060.01 2020-01-18 18:48:00 Рубль
