我有一个原理图形式的多索引pandas数据帧(尽管我使用的实际数据帧有数百万行):
import pandas as pd
df = pd.DataFrame([['Alpha', 'a', 1,10], ['Alpha', 'a', 2,20],['Alpha', 'a', 3,30],
['Alpha', 'b', 1,50],['Alpha', 'b', 2,60],['Alpha', 'b', 3,10],
['Alpha', 'c', 1,10],['Alpha', 'c', 2,70],['Alpha', 'c', 3,80],
['Beta', 'a', 1,30], ['Beta', 'a', 2,40],['Beta', 'a', 3,50],
['Beta', 'b', 1,80],['Beta', 'b', 2,70], ['Beta', 'b', 3,60],
['Beta', 'c', 1,10],['Beta', 'c', 2,30], ['Beta', 'c', 3,40]],
columns=['Product', 'Scenario', 'Time','Price'])\
.set_index(['Product', 'Scenario'])
按产品和时间分组,我希望不同方案的“价格”的排名自相关,示意性定义如下(按产品):
(t时刻的秩自相关)=秩相关('Price'在时间t,'Price'在时间t+1)
其中,时间t的('Price'在时间t)是一个向量,它包含与场景一样多的条目(每个产品都有一个这样的向量)。例如,对于时间t=2时的产品“α”,所需数量为
^{pr2}$等于0.5。对于最后一个时间步骤(本例中t=3),它应该简单地返回NaN(因为t+1没有数据)。总之,所需的结果数据帧应为:
import numpy as np
df_result = pd.DataFrame([['Alpha',1,0], ['Alpha',2,0.5],['Alpha',3,np.nan],
['Beta',1,1], ['Beta',2,1],['Beta',3,np.nan]],
columns=['Product', 'Time','Autocorrelation'])\
.set_index(['Product'])
Time Autocorrelation
Product
Alpha 1 0.0
Alpha 2 0.5
Alpha 3 NaN
Beta 1 1.0
Beta 2 1.0
Beta 3 NaN
我想先从
数据框groupby(['Product','Time']).agg(自相关函数)
但是聚合操作需要来自两个不同组(即不同时间的组)的数据,到目前为止,我还没有找到这样做的方法。有什么想法吗?在
目前没有回答
相关问题
PyPI热门下载资源包