Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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_Pandas_Dataframe - Fatal编程技术网

Python 面板数据与熊猫的百分比变化

Python 面板数据与熊猫的百分比变化,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下面板数据,长格式。列日期是时间维度,并与SuperKT和product共同识别一个观察值。我想计算列价格中的时间百分比变化(每Kt产品损失一个观察值) 超级KT=1,产品=1的预期产量: cols = ['date', 'supermkt', 'product', 'price','pct_change'] data = [[2012-08-01,1,1,83,Nan], [2012-08-02,1,1,68,-0.18], [2012-08-03,1,1,94,0.38], [201

我有以下面板数据,长格式。列日期是时间维度,并与SuperKT和product共同识别一个观察值。我想计算列价格中的时间百分比变化(每Kt产品损失一个观察值)

超级KT=1,产品=1的预期产量:

cols = ['date', 'supermkt', 'product', 'price','pct_change']

data = [[2012-08-01,1,1,83,Nan],
[2012-08-02,1,1,68,-0.18],
[2012-08-03,1,1,94,0.38],
[2012-08-04,1,1,98,1.04],
[2012-08-05,1,1,101,1.03]]

IIUC,使用
groupby
+
pct\u change

df.assign(pct_change=df.groupby(['supermkt', 'product']).price.pct_change())

          date  supermkt  product  price  pct_change
0   2012-08-01         1        1     83         NaN
1   2012-08-02         1        1     68   -0.180723
2   2012-08-03         1        1     94    0.382353
3   2012-08-04         1        1     98    0.042553
4   2012-08-05         1        1    101    0.030612
5   2012-08-01         1        2     21         NaN
6   2012-08-02         1        2      6   -0.714286
7   2012-08-03         1        2      6    0.000000
8   2012-08-04         1        2      4   -0.333333
9   2012-08-05         1        2     12    2.000000
10  2012-08-01         2        1     78         NaN
11  2012-08-02         2        1     88    0.128205
12  2012-08-03         2        1     48   -0.454545
13  2012-08-04         2        1     48    0.000000
14  2012-08-05         2        1     48    0.000000

你的预期产量是多少?另外,示例数据中的第一列似乎不是日期格式?我假设日期顺序很重要。您会希望以某种方式对其进行排序。@piRSquared谢谢您。。。由于某种原因,我没有看到OP编辑了他们的数据(日期是在之后添加的)。
df.assign(pct_change=df.groupby(['supermkt', 'product']).price.pct_change())

          date  supermkt  product  price  pct_change
0   2012-08-01         1        1     83         NaN
1   2012-08-02         1        1     68   -0.180723
2   2012-08-03         1        1     94    0.382353
3   2012-08-04         1        1     98    0.042553
4   2012-08-05         1        1    101    0.030612
5   2012-08-01         1        2     21         NaN
6   2012-08-02         1        2      6   -0.714286
7   2012-08-03         1        2      6    0.000000
8   2012-08-04         1        2      4   -0.333333
9   2012-08-05         1        2     12    2.000000
10  2012-08-01         2        1     78         NaN
11  2012-08-02         2        1     88    0.128205
12  2012-08-03         2        1     48   -0.454545
13  2012-08-04         2        1     48    0.000000
14  2012-08-05         2        1     48    0.000000