Python многоиндексные значения слияния - PullRequest
2 голосов
/ 11 февраля 2020

Моя проблема в том, что у меня есть список словарей с 3 ключами, флагом, временем начала и ID. Я пытаюсь выполнить sh способ, при котором в списке сначала сортируется по флагу, а затем по времени запуска и образцу списка ids.My:

[{'flag': '143', 'startTime': '2020/02/09/10', 'id': '143'},
 {'flag': '118', 'startTime': '2020/02/08/09', 'id': '118'},
 {'flag': '138', 'startTime': '2020/02/09/05', 'id': '138'},
 {'flag': '144', 'startTime': '2020/02/09/11', 'id': '144'},
 {'flag': '19', 'startTime': '2020/02/04/06', 'id': '19'}]

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

temp = df.set_index(['flag', 'startTime'])

и выборкой температуры, которую я получил:

flag starttime     id
0   2020/02/03/11   0
    2020/02/03/11   0
1   2020/02/03/12   1
    2020/02/03/12   1
3   2020/02/03/14   3
    ... ... ...
140 2020/02/09/07   140
141 2020/02/09/08   141
142 2020/02/09/09   142
143 2020/02/09/10   143
144 2020/02/09/11   144

Что я пытаюсь достичь, для флага 1 и времени начала 2020/02 / 03/03 скажем, если есть 3 идентификатора 1,2,3, тогда мой фрейм данных должен выглядеть примерно так:

flag sttarttime    id 
   1    2020/02/03/03 1,2,3
   2    2020/02/04/02 9,8,5 etc...

Может кто-нибудь PLS помочь мне в этом? Любая помощь в этом очень ценится. Я схожу с ума по этому поводу уже несколько недель. Заранее спасибо.

1 Ответ

0 голосов
/ 11 февраля 2020

Вы можете попробовать это:

df.groupby(['flag','startTime'])['id'].apply(lambda x: ','.join(x)).reset_index()

или, если хотите, в виде списка:

df.groupby(['flag','startTime'])['id'].apply(list).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...