2016-06-10 80 views
0

我想按周計算數據框中的%差異,並將這些計算放在新的數據框中。用熊貓數據幀向前或向後計算

開始df

index  Date  Zone  Amount 
    0  2011-01-08 YQHDK 1691938000.0 
    1  2011-02-05 YQHDK 1760009000.0 
    2  2011-03-05 YQHDK 1893000000.0 

新的數據幀newdf會是什麼樣子:

index  Date  Zone % diff 
    0  2011-02-05 YQHDK 4.02 
    1  2011-03-05 YQHDK 7.56 

我怎樣才能做到這一點不通過循環去?

+0

總是被相鄰行之間的比例是多少? (什麼是「按星期」是什麼意思?) – unutbu

+0

每一行都與不同的星期關聯,索引1的%diff應該是(1691938000 - 1760009000)/ 1691938000 – Lisle

回答

3

你能做到這樣:

In [15]: df.Amount.pct_change()*100 
Out[15]: 
0   NaN 
1 4.023256 
2 7.556268 
Name: Amount, dtype: float64 

In [16]: df.Amount.pct_change().shift(-1)*100 
Out[16]: 
0 4.023256 
1 7.556268 
2   NaN 
Name: Amount, dtype: float64 

In [8]: df['pct_diff'] = df.Amount.pct_change()*100 

In [9]: df 
Out[9]: 
    index  Date Zone  Amount pct_diff 
0  0 2011-01-08 YQHDK 1.691938e+09  NaN 
1  1 2011-02-05 YQHDK 1.760009e+09 4.023256 
2  2 2011-03-05 YQHDK 1.893000e+09 7.556268 
+0

我可以用一個有很多Zone使用groupby的df來做到這一點嗎? – Lisle

+0

@Lisle,你可以通過一個例子更新你的問題或發佈一個新的問題? – MaxU