2015-08-17 141 views
0

我有一列數據幀,我想要移位,但是在分區而不是整個數據框。使用group by partition by

例如,我想從這個數據幀去:

State, Year, GDP 
NY,2011,100 
NY,2012,110 
NY,2013,120 
CA,2011,70 
CA,2012,80 
CA,2013,90 

這個數據幀:

State, Year, GDP, GDP y-1 
NY,2011,100,NaN 
NY,2012,110,100 
NY,2013,120,110 
CA,2011,70,NaN 
CA,2012,80,70 
CA,2013,90,80 

到目前爲止,我用這樣的代碼:

grouped = df.groupby("State") 
for state, state_df in grouped: 
    state_df["GDP Y-1"]=state_df["GDP"].shift(1) 

我相信這給了我我想要的每個國家,但是我不知道如何將它結合在一起(基本上只是追加每個數據幀在另一個下面)。我怎樣才能做到這一點?

回答

1

您可以將您的中間DataFrames在列表中,並使用pd.concat加入他們在一起:

grouped = df.groupby("State") 
L = [] 
for state, state_df in grouped: 
    state_df["GDP Y-1"]=state_df["GDP"].shift(1) 
    L.append(state_df) 

pd.concat(L) 
Out[149]: 
    State Year GDP GDP Y-1 
3 CA 2011 70  NaN 
4 CA 2012 80  70 
5 CA 2013 90  80 
0 NY 2011 100  NaN 
1 NY 2012 110  100 
2 NY 2013 120  110 
+0

感謝。我應該想到這一點。 –