Python 面板数据与熊猫的百分比变化
我有以下面板数据,长格式。列日期是时间维度,并与SuperKT和product共同识别一个观察值。我想计算列价格中的时间百分比变化(每Kt产品损失一个观察值) 超级KT=1,产品=1的预期产量: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
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