группировка pandas и выбор нужных значений
Всем привет! Мне нужно сгруппировать мой dataframe по некому id и для каждого получить в результате одну строчку, в столбцах которой будут последние по timestamp-столбцу ненулевые значения и первое значение для столбца timestamp То есть если у меня:
id,timestamp,status,value
1,12:00,ok,null
1,13:00,null,3
1,14:00,null,4
2,12:00,error,null
2,13:00,null,1
в итоге я должна получить
id,timestamp,status,value
1,12:00,ok,4
Как это можно сделать? Хотелось бы не очень костыльно и медленно, потому что данные большие, но кроме чего-то типа
tmp.status[tmp.status.isna()] = tmp.groupby([key], sort=False)['status'].apply(lambda x: x.bfill().ffill())
ничего на ум не приходит. Подскажите, пожалуйста, что здесь можно сделать?
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
При df:
id timestamp status value
0 1 12:00 ok NaN
1 1 13:00 NaN 3.0
2 1 14:00 NaN 4.0
можно сделать аггрегацию. для примера:
res = df.groupby("id").agg({"timestamp":"first", "value":"last"})
res:
timestamp value
id
1 12:00 4.0