Новичок в pandas, я хотел бы объединить 2 строки в 1, если значения столбцов совпадают

#python #pandas

Вопрос:

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

Имя R0 Комната R1
A 1 1 3
B 5 1 1
C 3 7 10
D 4 8 12

Я хочу последовательно просмотреть конкретные столбцы каждой строки во фрейме данных, и если начальное значение Rm эквивалентно Rm следующей строки, то я объединю 2 строки, сохраняя значения, как показано ниже, обратите внимание, что это образец фрейма данных, который я использую, данные, с которыми я работаю, содержат больше строк и столбцов, и я буду использовать этот метод для нескольких столбцов. Мне удалось сделать это для одной строки, но я не смог пройти по каждой строке, сравнивая и объединяя.

Имя R0 Комната R1
A,B 5 1 3
C 3 7 10
D 4 8 12

Теперь, когда я использую это в своей программе, должен ли я попытаться заставить оба условия столбца работать одновременно или мне следует выполнить цикл по данным один раз для каждого набора условий?

Ответ №1:

Вы должны избегать повторения строк, это медленно.

Вместо этого вы могли бы использовать groupby и agg :

 (df.groupby(df['Rm'].ne(df['Rm'].shift()).cumsum(), as_index=False)
   .agg({'Name': ','.join, 'R0':'max', 'Rm': 'first', 'R1': 'max'})
  )
 

Выход:

   Name  R0  Rm  R1
0  A,B   5   1   3
1    C   3   7  10
2    D   4   8  12