свернуть группу в один ряд - PullRequest
0 голосов
/ 06 июня 2018

У меня есть кадр данных, как показано ниже:

         id                     timestamp            name
         1                  2018-01-23 15:49:53     "aaa"
         1                  2018-01-23 15:54:56     "bbb"
         1                  2018-01-23 15:49:57     "bbb"
         1                  2018-01-23 15:49:54     "ccc"

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

         id                       name   
          1                   aaa->ccc->bbb->bbb

Значения в названии расположены в хронологическом порядке, как они отображаются с отметкой времени.Есть ли какие-либо указания по этому поводу?

1 Ответ

0 голосов
/ 06 июня 2018

Я тоже могу добавить некоторые данные в ваш df:

print(df)

Вывод:

   id   timestamp   name
0   1   2018-01-23T15:49:53 aaa
1   1   2018-01-23T15:54:56 bbb
2   1   2018-01-23T15:49:57 bbb
3   1   2018-01-23T15:49:54 ccc
4   2   2018-01-23T15:49:54 ccc
5   2   2018-01-23T15:49:57 aaa

Тогда вам нужно:

df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.sort_values(['id', 'timestamp'])
grp = df.groupby('id')['name'].aggregate(lambda x: '->'.join(tuple(x))).reset_index()
print(grp)

Вывод:

    id  name
0   1   aaa->ccc->bbb->bbb
1   2   ccc->aaa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...