Редактировать: уточнил вопрос
Я хочу объединить pd.DataFrame с именем df по "Идентификатору" и суммировать столбцы "Затраты". Для столбцов категории я хочу применить функцию агрегирования, которая может быть произнесена вслух, например: «агрегировать и принимать наиболее частое значение (режим) столбца, но если режим пустой, чем второй столбец по частоте». Другими словами, я хочу иметь режим категории (после агрегирования), но этот режим не должен быть пустым.
Результатом должен быть pd.DataFrame new_df .
df
Identifier Cost Cost2 Category1 Category2 Category3
0 A 10 10 one aaa
1 A 20 10 blue aaa
2 B 10 20 two bbb
3 B 10 30 green bbb
4 B 30 40 bbb
5 C 20 50 three red ccc
--- процесс агрегации --->
new_df
Identifier Cost Cost2 Category1 Category2 Category3
0 A 30 20 one blue aaa
1 B 50 90 two green bbb
2 C 20 50 three red ccc
Код для воспроизведения примера:
import pandas as pd
data_df = {
'Identifier': ['A', 'A', 'B', 'B', 'B', 'C'],
'Cost': [10, 20, 10, 10, 30, 20],
'Cost2':[10,10,20,30,40,50],
'Category1' : ['one', '', 'two', '', '', 'three'],
'Category2' : ['', 'blue', '', 'green', '', 'red'],
'Category3' : ['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc']
}
df = pd.DataFrame(data_df)
data_new_df = {
'Identifier': ['A', 'B', 'C'],
'Cost': [30, 50, 20],
'Cost2' : [20,90,50],
'Category1' : ['one', 'two', 'three'],
'Category2' : ['blue', 'green', 'red'],
'Category3' : ['aaa', 'bbb', 'ccc']
}
new_df = pd.DataFrame(data_new_df)