2017-10-27 7 views
2

이것은 내 판다 데이터 프레임입니다.팬더에 이중 누적 합계를 적용하는 방법은 무엇입니까?

import pandas as pd 

df = pd.DataFrame([ 
    ['2017-01-01 19:00:00','2017-01-01 19:00:00','2017-01-02 17:00:00','2017-01-01 17:00:00', 
    '2017-01-02 19:00:00','2017-01-02 19:00:00'], 
        ['RUT','RUT','RUT','NDX','NDX','NDX'],[1.0,1.0,1.0,1.0,2.0,2.0],[2.0,2.0,1.0,1.0,3.0,3.0]]).T 

df.columns=[['Fecha_Hora','Ticker_Suby','Rtdo_Bruto_x_Estrat','Rtdo_Neto_x_Estrat']] 
df = df.sort_values(by=['Ticker_Suby','Fecha_Hora',], ascending=True) 
df 

글쎄, 나는 합계해야 할 'Rtdo_Bruto_x_Estrat'and'Rtdo_Neto_x_Estrat Fecha_Hora '와'Ticker_Suby ''그룹화 '.

내가 사용하고 있습니다 :

df.groupby(by=['Fecha_Hora','Ticker_Suby']).sum().groupby(level[0]).cumsum() 

그리고 성공적으로 얻을 :

enter image description here

글쎄, 내 문제는 내가 필드 'Rtdo_Bruto_x_Estrat'의 값의 누적 합계를 적용 할 필요가있다 및 'Rtdo_Neto_x_Estrat'이 새 df에서 'Ticker Suby'로 그룹화됩니다.

enter image description here

내가 사용하고 있습니다 : 내 목표는

df.groupby(by=['Fecha_Hora','Ticker_Suby']).sum().groupby(level=[1]).cumsum() 

내가 얻을 :

enter image description here

그래서, 정말 내 문제는 두 솔루션이 될 수 있도록하는 방법이다 동일한 데이터 프레임에서.

대단히 감사합니다.

답변

1

cumsum 사용하여 만든 DataFramesconcat, 차이가 Dataframelevel=1 의해 level=0 및 제 groupby로하여 만든 제이다

a = df.groupby(by=['Fecha_Hora','Ticker_Suby']).sum() 
df = pd.concat([a.groupby(level=[0]).cumsum(), 
       a.groupby(level=[1]).cumsum().add_suffix('_cum')], 1) 
print (df) 
           Rtdo_Bruto_x_Estrat Rtdo_Neto_x_Estrat \ 
Fecha_Hora   Ticker_Suby            
2017-01-01 17:00:00 NDX       1.0     1.0 
2017-01-01 19:00:00 RUT       2.0     4.0 
2017-01-02 17:00:00 RUT       1.0     1.0 
2017-01-02 19:00:00 NDX       4.0     6.0 

           Rtdo_Bruto_x_Estrat_cum \ 
Fecha_Hora   Ticker_Suby        
2017-01-01 17:00:00 NDX        1.0 
2017-01-01 19:00:00 RUT        2.0 
2017-01-02 17:00:00 RUT        3.0 
2017-01-02 19:00:00 NDX        5.0 

           Rtdo_Neto_x_Estrat_cum 
Fecha_Hora   Ticker_Suby       
2017-01-01 17:00:00 NDX        1.0 
2017-01-01 19:00:00 RUT        4.0 
2017-01-02 17:00:00 RUT        5.0 
2017-01-02 19:00:00 NDX        7.0 
+0

감사 Jezrael. 그것은 내 프로젝트에서 괜찮아. –