Есть ли способ сделать pandas групповую агрегацию на фрейме данных и вернуть определенную строку из столбца? У меня есть такой фрейм данных:
lst = [[ 100, 'buicks', .001, np.nan, np.nan], [101, 'chevy', .002, np.nan, np.nan],
[102, 'olds', .003, .006, np.nan], [100, 'buick', np.nan, .004, np.nan],
[103, 'nissan', np.nan, np.nan, .1], [103,'nissans', np.nan, .14, np.nan]]
df = pd.DataFrame(lst, columns=['car_id', 'name', 'aa', 'bb', 'cc'])
car_id name aa bb cc
0 100 buicks 0.001 NaN NaN
1 101 chevy 0.002 NaN NaN
2 102 olds 0.003 0.006 NaN
3 100 buick NaN 0.004 NaN
4 103 nissan NaN NaN 0.1
5 103 nissans NaN 0.140 NaN
Нужно это:
0 100 buicks 0.001 0.004 NaN
1 101 chevy 0.002 NaN NaN
2 102 olds 0.003 0.006 NaN
4 103 nissans NaN 0.140 0.1
Что я пытаюсь сделать, это сгруппировать по столбцу car_id, а затем суммировать столбцы aa, bb, cc. Тем не менее, значения столбца имени могут не совпадать, но мне нужно сохранить одно из них. Мне все равно, какой. Я смотрел: Pandas сумма по группам, но исключил определенные столбцы и в итоге получилось что-то вроде этого:
df.groupby('car_id').agg({'aa': np.sum, 'bb': np.sum, 'cc':np.sum})
Но это отбрасывает столбец имени. Я предполагаю, что могу добавить столбец имени к приведенному выше выражению, и есть операция, которую я могу вставить туда, чтобы вернуть строку.
Спасибо