Python 熊猫数据框架:计算历年变化
我有一个像这样的数据框Python 熊猫数据框架:计算历年变化,python,python-2.7,pandas,numpy,dataframe,Python,Python 2.7,Pandas,Numpy,Dataframe,我有一个像这样的数据框 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, ...}
所以,我有很多产品,多年来每种产品的价格都不一样
我想年复一年地计算每个产品的年度演变
我可以通过一个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美元,下一个价格(2001年)是11美元
希望你能理解我!
提前谢谢大家
AE非常感谢!我可以使用diff()来获得其他计算的下一个价格。太好了!很高兴能帮上忙。非常感谢!我可以使用diff()来获得其他计算的下一个价格。太好了!很高兴能帮忙。
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