как провести первое и последнее наблюдение в панде в групповом режиме и передать данные на фрейм - PullRequest
0 голосов
/ 26 сентября 2018

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

  Date          time         tank        stock
  01-01-2018    05:30:00     1           4567
  01-01-2018    03:30:00     1           2345
  01-01-2018    04:30:00     1           1234
  01-01-2018    08:00:00     1           3345
  02-01-2018    06:30:00     2           4489
  02-01-2018    03:30:00     2           1290
  02-01-2018    11:30:00     2           6578
  02-01-2018    10:00:00     2           3444

Я хочу отсортировать фрейм данных по дате, времени и емкости, а затем взять первое и последнее наблюдение со склада.

 Sorted Dataframe

  Date          time         tank        stock
  01-01-2018    03:30:00     1           2345
  01-01-2018    04:30:00     1           1234
  01-01-2018    08:00:00     1           3345
  01-01-2018    05:30:00     1           4567
  02-01-2018    03:30:00     2           1290
  02-01-2018    06:30:00     2           4489
  02-01-2018    10:00:00     2           3444
  02-01-2018    11:30:00     2           6578

  Desired dataframe

  Date          tank    first_stock    last_stock
  01-01-2018    1       2345           4567
  02-01-2018    2       1290           6578

Для сортировки я использую следующий скрипт на python

 df = df.groupby(['Date','tank']).apply(lambda x: x.sort_values(['time'],ascending = True))

Но как получить окончательный фрейм данных?

1 Ответ

0 голосов
/ 26 сентября 2018

Используйте sort_values с указанием всех 3 столбцов и затем агрегируйте first и last:

df = (df.sort_values(['Date','tank', 'time'])
        .groupby(['Date','tank'])['stock']
        .agg(['first','last'])
        .reset_index())
print (df)
         Date  tank  first  last
0  01-01-2018     1   2345  3345
1  02-01-2018     2   1290  6578

Деталь:

print (df.sort_values(['Date','tank', 'time']))
         Date      time  tank  stock
1  01-01-2018  03:30:00     1   2345
2  01-01-2018  04:30:00     1   1234
0  01-01-2018  05:30:00     1   4567
3  01-01-2018  08:00:00     1   3345
5  02-01-2018  03:30:00     2   1290
4  02-01-2018  06:30:00     2   4489
7  02-01-2018  10:00:00     2   3444
6  02-01-2018  11:30:00     2   6578
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...