Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫数据框架:计算历年变化_Python_Python 2.7_Pandas_Numpy_Dataframe - Fatal编程技术网

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