Я пытаюсь обобщить данные от различных датчиков от процесса серийного производства, чтобы сопоставить их с конечным продуктом, используя функцию pandas.groupby (). Agg ({}).
Для удобства ипоскольку мы еще не уверены, как лучше всего суммировать некоторые атрибуты, я хочу использовать функцию «описать» для некоторых атрибутов.Для других атрибутов требуется несколько функций агрегирования, например ['min', 'max'].
Проблема заключается в том, что pandas, по-видимому, не может выполнить обе операции в одной и той же операции группировки, если она предоставлена в одном и том же словаре.
Минимальный пример:
df = pd.DataFrame({'Sensor_1': [1, 2, 3, 4, 5, 6, 5, 4, 3, 3, 2],
'Sensor_2': [2, 2, 3, 3, 7, 6, 9, 2, 2, 1, 1],
'Batch': [1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2]})
Теперь я могу использовать оператор группировки для выполнения следующей группировки:
df.groupby('Batch').agg({'Sensor_1': 'mean',
'Sensor_2': 'describe'})
Я также могу группировать, например, как:
df.groupby('Batch').agg({'Sensor_1': ['mean', 'min'],
'Sensor_2': 'max'})
Однако такое определение, как:
df.groupby('Batch').agg({'Sensor_1': ['mean', 'min'],
'Sensor_2': 'describe'})
вызывает следующую ошибку:
TypeError: невозможно объединить объект типа "class 'dict'";действительны только объекты pd.Series, pd.DataFrame и pd.Panel (не рекомендуется)
Кто-нибудь знает, почему это происходит и как решить проблему?
IЯ использую Jupyter Hub с Python 3.6.8 и Pandas версии 0.23.0