Панды получают уникальный индекс после объединения списка фреймов данных

#python #pandas

#python #pandas

Вопрос:

Проблема: у меня есть следующий объект фрейма данных pandas, который изначально был объединен на основе списка фреймов данных (в котором каждый df_* фрейм данных содержит check_* информацию). Приведенный ниже фрейм данных — это только пример, реальный содержит больше комбинаций (стадий, единиц измерения) (и я не знаю априори, сколько).

Цель: этап и единица измерения должны быть индексом, для которого заданы значения check_* . Итак, по сути, для каждого этапа, комбинации единиц измерения я хочу иметь одну уникальную строку, содержащую информацию check_* .

Есть идеи, как это сделать? Большое спасибо!

 # Current Situation
stage   unit    check_1 check_2 check_3 check_4
A       min     NaN     NaN    120      NaN
B       min     NaN     NaN    210      NaN
A       sec     NaN     NaN    3        NaN
B       sec     NaN     NaN    3        NaN
B       min     NaN     NaN    NaN      0.8
A       min     NaN     NaN    NaN      0.3


# Target
stage   unit    check_1 check_2 check_3 check_4
A       min     NaN     NaN    120      0.3
B       min     NaN     NaN    210      0.8
A       sec     NaN     NaN    3        NaN
B       sec     NaN     NaN    3        NaN
  

Ответ №1:

Попробуйте

 df = df.groupby(['stage', 'unit'], as_index=False).first()
  

Ответ №2:

Вы можете использовать df.groupby и sum :

 check_cols = df.filter(like='check_', axis=1).columns.tolist()
res = df.fillna(0).groupby(['stage', 'unit'])[check_cols].sum()
  

Комментарии:

1. @rkraft Пожалуйста, дайте мне знать, сработал ли для вас ответ?