Данные выглядят так:
Данные = {'group_id: [' 1 ',' 1 ',' 1 ',' 1 ',' 2 ',' 2 ',' 2 '],'source': ['Twitter', 'Instagram', 'Twitter', 'Facebook', 'Facebook', 'Twitter', 'Instagram', 'Facebook'] 'Серьезность': [4,2,7,4,8,9,3,5]}
Мне нужно:
1) Взять первую строку кода серьезности каждой группы 2) Получить абсолютное значение всех строк (разность) изидентифицированный код серьезности каждой группы (из # 1).Пример: код серьезности группы 1 (4) ... первая строка diff = 0;второй ряд diff = 2;третий ряд diff = 3;и т. д. То же самое для группы 2. 3) В каждой группе найдите ближайшего соседа каждого из каждого источника с серьезностью первой строки.
Я определил первую строку и проиндексировал код серьезности.При выполнении итерации код использует только последний индексированный код серьезности для вычисления разницы.
df = pd.DataFrame(Data)
first_row = b.groupby(['group_id']).first()
for row in first1.itertuples(index=True, name='Pandas'):
value = getattr(row,'Severity')
df['dif'] = (df['Severity'] - value).abs()
Я ожидаю, что выходные данные будут в кадре данных с добавленным столбцом dif.Я могу извлечь ближайших соседей в каждой группе для каждого источника, где True.Повторите процесс: извлеките строки, где True, и выполните цикл по False, чтобы найти дополнительные строки с новой серьезностью первой строки.Повторяйте снова, пока не останется ни одной строки, или пока все строки не станут ложными.