Правильное использование групповой функции - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть фрейм данных df1, который выглядит следующим образом:

details                endFrame id  indexID object  startFrame
List of dictionaries 1   1111   78    0    Motorbike    1
List of dictionaries 2   3647   78    0    Motorbike    1112
List of dictionaries 3   3678   78    0    Motorbike    3649
List of dictionaries 4   704    120   3    Pedestrian   66
List of dictionaries 5   817    120   3    Pedestrian   705
List of dictionaries 6   922    141   5    Car          818

Список словарей выглядит следующим образом:

[{'y2': 627, 'frame': 1, 'visibility': 0, 'y1': 603, 'score': 1, 'x2': 770, 'x1': 759, 'class': 1}, {'y2': 623, 'frame': 2, 'visibility': 0, 'y1': 599, 'score': 1, 'x2': 777, 'x1': 766, 'class': 1},....]

Я пытаюсь объединитьстроки, имеющие одинаковый indexID вместе.Кроме того, мне пришлось бы расширить каждый список словарей, чтобы они стали одним длинным списком, вместо того, чтобы иметь несколько списков в ячейке «детали».Другими словами, после объединения ячейка сведений будет иметь очень длинный список словарей.

Мне не нужно беспокоиться о том, что происходит в столбцах endframe, id и startframe в df1.,Однако в каждом объединенном indexID все еще должен быть объект.Обратите внимание, что каждая строка с одинаковым indexID в df1 всегда будет иметь один и тот же объект.

Пример вывода:

details                       endFrame  id  indexID object  startFrame
List of dictionaries 1,2 and 3   1111   78    0    Motorbike    1
List of dictionaries 4 and 5      704   120   3    Pedestrian   66
List of dictionaries 6            922   141   5    Car          818

1 Ответ

0 голосов
/ 17 апреля 2019
_newdf2 = df1.groupby('indexID')['detail'].sum().reset_index()
        for index,row in _newdf2.iterrows():
            x = _newdf.loc[df1['indexID'] == row['indexID'], 'object']
            _newdf2['object'] = x.to_string().lstrip('0123456789.- ')
...