#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 Пожалуйста, дайте мне знать, сработал ли для вас ответ?