2017-06-20 156 views
0

我有一個數據幀熊貓這樣熊貓數據框:計算在年

Years {2000, ..., 2001, ..., 2002, ...} 
product {'A', 'B', 'C', 'D', ...} 
price $ {10, 11, 12, 13, 14, ...} 

所以變化,我有很多的產品,不同的價格,多年來爲他們每個人 我想計算每年進化每個產品一年一年

後,我可以做到這一點for循環,其中的每一行我期待已久的產品,並在今年+ 1得到的價格,但它的聲音沉重,長時間來執行。

有沒有更好的方法來做到這一點?

最好的(用於日後的目的)將得到類似的東西

Years {2000, ..., 2001, ..., 2002, ...} 
product {'A', 'B', 'C', 'D', ...} 
price $ {10, 11, 12, 13, 14, ...} 
next price $ {11, 13, 14, 12, 14, ...} 

最後,我知道,2000年的產品A的$ 10的價格和$ 11美元

接下來的價格(2001)

希望你能理解我! 謝謝大家提前 AE

回答

1
df = pd.DataFrame({'Years': [2000]*4+[2001]*2+[2000]*2+[2001]*2+[2002]*4, 
        'Product': [np.random.choice(['A', 'B', 'C', 'D']) for _ in range(0, 14)], 
        'Price': np.random.uniform(1,5, size=14)}) 

res = df.sort_values('Years').set_index('Years').groupby('Product').apply(lambda x: x['Price'].diff()) 

Product Years 
A  2001   NaN 
B  2001   NaN 
     2001  3.176459 
     2002 -0.743620 
C  2000   NaN 
     2000  1.450093 
     2001 -0.040187 
     2002 -3.237749 
D  2000   NaN 
     2000 -0.670978 
     2000  0.434457 
     2000  0.280269 
     2002 -0.002989 
     2002  2.671679 
+0

非常感謝! 我可以使用diff()來管理其他計算的下一個價格。 – user8189873

+0

太棒了!很高興有幫助。 –