У меня есть pandas
датафрейм, в котором есть столбец, где данные представляют собой список статистических данных, вычисленных из операции groupby.создать новые столбцы из списка столбцов в pandas
df = pd.DataFrame({'a':[1,1,1,2,2,2,3], 'b':[3,4,2,3,4,3,2]})
def calculate_stuff(x):
return len(x)/5, sum(x)/len(x), sum(x)
>>> df.groupby('a').apply(lambda row : calculate_stuff(row.b))
a
1 (0, 3, 9)
2 (0, 3, 10)
3 (0, 2, 2)
dtype: object
В принципе, у меня есть несколько статистических данных, которые зависят друг от друга и должны быть рассчитаны для каждой группы. Функция, которая делает это, возвращает кортеж значений статистики. То, что я хочу, чтобы создать новый столбец для каждого индекса кортежа, так что это выглядит следующим образом:
a col1 col2 col3
1 0 3 9
2 0 3 10
3 0 2 2
Я не думаю, что я могу использовать df.groupby('a').agg
, потому что один из расчетов не требуется для других расчетов. Какие-либо предложения?
редактировать: Я понял мои агрегатные функции в моем примере не агрегатные функции, поэтому я изменил их
Это прекрасно работает. Я сделал редактирование, чтобы индекс поддерживался из исходной группы данных. – mnky9800n
Хммм, я не понимаю, почему вывод отличается по желанию. Может быть, вопрос может быть изменен или мне что-то не хватает? – jezrael