gpt4 book ai didi

python - 以 Python 和 Pandas 中存在的某些行为条件获取新系列

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:36 26 4
gpt4 key购买 nike

我不知道有什么比我想做的更容易的事了。欢迎编辑。这是我想要做的。

我有商店、日期和产品索引以及一个名为价格的列。

我有两个独特的产品 1 和 2。

但是对于每个商店,我没有对每个日期的观察,并且对于每个日期,我不一定都有两种产品。

我想为每个商店创建一个系列,仅当两种产品都存在时才按日期索引。原因是因为我希望系列的值(value)是产品 1 价格/产品 2 价格。

这是一个高度不平衡的面板,我做了一个大约 75 行代码的可怕解决方法,所以我很感激任何提示。这在将来会非常有用。

数据如下所示。

   weeknum Location_Id Item_Id averageprice 
70 201138 8501 1 0.129642
71 201138 8501 2 0.188274
72 201138 8502 1 0.129642
73 201139 8504 1 0.129642

在这种简单情况下的预期输出是:

             weeknum   Location_Id   averageprice 
? 201138 8501 0.129642/0.188274

因为这是唯一满足所有要求的一个。

最佳答案

我认为这可以加入两个子框架(但也许有更清晰的枢轴方式):

In [11]: res = pd.merge(df[df['Item_Id'] == 1], df[df['Item_Id'] == 2],
on=['weeknum', 'Location_Id'])

In [12]: res
Out[12]:
weeknum Location_Id Item_Id_x averageprice_x Item_Id_y averageprice_y
0 201138 8501 1 0.129642 2 0.188274

现在您可以将结果中的这两列分开:

In [13]: res['price'] = res['averageprice_x'] / res['averageprice_y']

In [14]: res
Out[14]:
weeknum Location_Id Item_Id_x averageprice_x Item_Id_y averageprice_y price
0 201138 8501 1 0.129642 2 0.188274 0.688582

关于python - 以 Python 和 Pandas 中存在的某些行为条件获取新系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com