2016-06-11 2 views
1

Извините за вопрос noob, поскольку я пытаюсь изучить Python. Глядя вперед, чтобы получить до скорости и возвратностиPandas: несколько итоговых итогов в сводке Dataframe

Предполагая, что у меня есть следующие данные,

YEAR   SECTOR PROFIT STARTMVYEAR TOTALPROFIT STARTMV 
IBM   TECHNOLOGY -500 2500  500   1500 
APPLE  TECHNOLOGY 800 4000  300   4500 
GM   INDUSTRIAL 250 1000   0   1250 
CHRYSLER INDUSTRIAL 600 3000  100   3500 

Я хочу создать резюме, которое выглядит следующим образом

SECTOR  PROFITYEAR TOTALPROFIT 
TECHNOLOGY  .046  .133 
INDUSTRIAL  .213  .021 

Где для каждой группы, у нас есть sum(PROFIT)/sum(STARTMVYEAR) и sum(TOTALPROFIT)/sum(STARTMV)

Если бы я хотел сделать это только для первого теста, я мог бы сделать

by_profit_totals =(df.groupby(['SECTOR'])['PROFIT'].sum()/by_first_count.groupby(['SECTOR'])['STARTMVYEAR'].sum()) 

Но как это сделать для обоих? Кроме того, есть ли простая функция, которую я мог бы использовать, например, прибыль и startmvyear и возвращает итоговое значение?

ответ

1

Вы можете использовать groupby с агрегирование cython optimizedsum, а затем div по numpy array созданной values:

g = df.groupby('SECTOR').sum() 
print (g[['PROFIT','TOTALPROFIT']].div(g[['STARTMVYEAR','STARTMV']].values).reset_index()) 
     SECTOR PROFIT TOTALPROFIT 
0 INDUSTRIAL 0.212500  0.021053 
1 TECHNOLOGY 0.046154  0.133333 
+0

Thats удивительный .. идеальный .. спасибо –

+0

Спасибо за прием. Рад, что я могу вам помочь. Приятный день! – jezrael