2016-04-13 42 views
0

的Pandas-集元素我有一個名爲table1透視表看起來像:透視表變量

     Volume 
Site TripDate     
003l 1990-06-10 2354.043820 
    1991-07-26 2745.673779 
    1993-10-08 22789.790846 
    1994-11-20 23072.306665 
    1995-04-24 25203.740194 
    1996-02-13 16505.985301 
    1996-04-15 8257.426317 
    1996-09-12 9148.369265 
    1997-02-13 10014.168593 
    1997-04-20 11154.686365 
    1997-08-23 13064.444117 
    1997-11-06 13704.596573 
    1998-04-15 14358.140459 
    1999-05-04 18100.457859 
    2000-03-17 22910.600843 
    2000-06-01 617.621794 
    2001-10-05 882.738323 
016l 1990-06-10 962.070643 
    1991-07-26 761.409178 
    1993-10-08 475.038362 
    1994-11-20 312.339596 
    1995-04-24 11569.523232 
    1996-02-13 15272.175019 
    1996-04-15 13542.057394 
    1996-09-12 14556.930737 
    1997-02-13 18905.265710 
    1997-04-20 19832.509861 

我感興趣的使用最早的體積計算的「理論值計算體積百分比爲每個站點「來規範化數據。對於每個站點,是否有方法直接從數據透視表中爲最早的體積計算(即1990-06-10)定義變量?

爲%體積的示例公式將是:

%Volume=(V_survey-V_1990)/(V_1990) 

我有累基於使用水平一個索引子集:

test = table1[table1[['TripDate']]==1990-06-10] 

但是,它引發以下錯誤:

KeyError: "['TripDate'] not in index" 

如果我使用list(table1.index.names)檢查索引名稱,則返回:

['Site', 'TripDate'] 

回答

0

我已經找到了我的問題的答案,但我確信有一個更優雅的解決方案。

在開發我的解決方案,我創建使用的最早日期數據透視表:

query2 = query1[query1.TripDate=='1990-06-10'] 

其中query1是我的原始數據文件的一個子集。

然後我創建了一個piviot表是使用類似於table1table2方式:

table3 = pd.pivot_table(query2,values=['Volume'], index=['Site','TripDate'], aggfunc=np.sum) 
table3 = table3.rename(columns = {'Volume':'Early_Vol'}) 

我可以使用然後合併table1和table3`:

merge = pd.merge(table1.reset_index(),table3.reset_index(),on=['Site'],how='left') 

而且有點格式化後,我留下我想要的輸出:

Site TripDate  Volume Early_Vol 
0 003l 1990-06-10 2354.043820 2354.043820 
1 003l 1991-07-26 2745.673779 2354.043820 
2 003l 1993-10-08 22789.790846 2354.043820 
3 003l 1994-11-20 23072.306665 2354.043820 
4 003l 1995-04-24 25203.740194 2354.043820 
5 003l 1996-02-13 16505.985301 2354.043820 
6 003l 1996-04-15 8257.426317 2354.043820 
7 003l 1996-09-12 9148.369265 2354.043820 
8 003l 1997-02-13 10014.168593 2354.043820 
9 003l 1997-04-20 11154.686365 2354.043820 
10 003l 1997-08-23 13064.444117 2354.043820 
11 003l 1997-11-06 13704.596573 2354.043820 
12 003l 1998-04-15 14358.140459 2354.043820 
13 003l 1999-05-04 18100.457859 2354.043820 
14 003l 2000-03-17 22910.600843 2354.043820 
15 003l 2000-06-01 617.621794 2354.043820 
16 003l 2001-10-05 882.738323 2354.043820 
17 016l 1990-06-10 962.070643 962.070643 
18 016l 1991-07-26 761.409178 962.070643 
19 016l 1993-10-08 475.038362 962.070643 
20 016l 1994-11-20 312.339596 962.070643 
21 016l 1995-04-24 11569.523232 962.070643 
22 016l 1996-02-13 15272.175019 962.070643 
23 016l 1996-04-15 13542.057394 962.070643 
24 016l 1996-09-12 14556.930737 962.070643 
25 016l 1997-02-13 18905.265710 962.070643 
26 016l 1997-04-20 19832.509861 962.070643 
27 016l 1997-08-23 20914.494534 962.070643