GroupBy функции в Python Pandas, такие как SUM(col_1*col_2), средневзвешенное значение и т. Д.

Можно ли напрямую вычислить продукт (или, например, сумма) двух столбцов без использования

grouped.apply(lambda x: (x.a*x.b).sum()

Гораздо (меньше половины времени на моей машине) быстрее использовать

df['helper'] = df.a*df.b
grouped= df.groupby(something)
grouped['helper'].sum()
df.drop('helper', axis=1)

Но мне не очень нравится это делать. Например, полезно вычислить средневзвешенное значение на группу. Здесь лямбда-подход будет

grouped.apply(lambda x: (x.a*x.b).sum()/(df.b).sum())

и опять же намного медленнее, чем деление помощника на b.sum().

9
задан piRSquared 4 January 2017 в 22:09
поделиться