python - 构建预测 Pandas DataFrame
问题描述
我在 Pandas 中有一个 DataFrame,其中包含如下所示的预测销售数据:
| Date | ProductID | Forecasted_Date | Sales |
---|-------|-----------|-----------------|-------|
0 | 1_Jan | 1 | 2_Jan | 10 |
1 | 1_Jan | 2 | 3_Jan | 3 |
2 | 1_Jan | 1 | 2_Jan | 7 |
3 | ... | | | |
4 | 2_Jan | 1 | 3_Jan | 7 |
在每个日期,对于每个 ProductId,销售预测在前 1 到 20 天之间(Forecasted_date)。
我想创建一个新的 DataFrame,由“[Date, ProductID]”多索引并具有以下列:
| IND_Date | IND_ProductID | F1 | F2 | ... | F20 |
|----------|---------------|----|------|-----|-----|
| 1_Jan | 1 | 10 | 3 | | |
| 1_Jan | 2 | 7 | etc. | | |
| ... | | | | | |
| 2_Jan | 1 | 7 | | | |
列表示预测的提前天数。(即,对于 Date=1_Jan,F1=Sales on 2_Jan)。
在 Pandas 中构建它的最佳方法是什么?
解决方案
我想到了。
如果df
是我的基本数据框...
- 假设 Date 和 Forecasted_Date 采用 Datetime 格式,则查找天数差异:
df['difference'] = (df['Forecasted_Date'] - df['Date']) / pd.Timedelta(1,'D'))
- 转换为所需的“f_”格式:
df['forecast_day'] = 'f_' + df['difference'].astype('int').astype('str')
- 创建数据透视表
df_forecast = pd.pivot_table(data=df, values="Sales", index=["Date", "Product_ID"], columns="forecast_day", aggfunc="sum")
完毕!
推荐阅读
- javascript - 如何使用 pk 从 django 获取 url 到 javascript
- python - 计算多边形中的点并将结果写入 (Geo)Dataframe
- measurement - 使用压缩传感的荧光光谱测量?
- kubernetes - 如何在 Homelab 中将共享驱动器用作多个 Kubernetes PV
- abap - SAP ABAP CDS 查看/DCL 检查授权
- mysql - 当文本未正确存储并存储在其他字符集中时如何转换整个 MySQL 数据库
- ios - UIScrollView 上的跳跃键盘被解雇
- spring - 如何在春季启动中使用条件接口与列表中的值
- wifi - ISP 是否注意到对您的 wifi 网络/路由器的暴力攻击?
- php - WSL2 Ubuntu 20.04、Docker 和 Laravel 启动本地主机不会显示在浏览器上