嘿,我在熊猫中有一个时间序列订单数据集,其中某些日期的值缺少该值以进行更正,我正尝试从以前的可用日期中获取该值。
for date in dates_missing:
df_temp = df[df.order_date<date].sort_values(['order_date'],ascending=False)
supplier_map = df_temp.groupby('supplier_id')['value'].first()
for supplier_id in supplier_map.index.values:
df[(df.order_datetime==date)&(df.su_id == supp)]['value'] = supplier_map.get(supplier_id)
为了解释代码,我在缺少的日期上循环,然后获取缺少的日期之前的值列表。 然后使用熊猫first()获取供应商ID到价值地图
现在最慢的部分是更新回原始数据帧
我正在遍历每个供应商并更新原始数据框中的值。
需要建议以加快内部for循环
示例:
|order_date|supplier_id |value |sku_id|
|2017-12-01| 10 | 1.0 | 1 |
|2017-12-01| 9 | 1.3 | 7 |
|2017-12-01| 3 | 1.4 | 2 |
|2017-12-02| 3 | 0 | 2 |
|2017-12-02| 9 | 0 | 7 |
|2017-12-03| 3 | 1.0 | 2 |
|2017-12-03| 10 | 1.0 | 1 |
|2017-12-03| 9 | 1.3 | 7 |
修复日期2017-12-02
|2017-12-02| 3 | 0 | 2 |
|2017-12-02| 9 | 0 | 7 |
校正后的数据帧
|order_date|supplier_id |value |sku_id|
|2017-12-01| 10 | 1.0 | 1 |
|2017-12-01| 9 | 1.3 | 7 |
|2017-12-01| 3 | 1.4 | 2 |
|2017-12-02| 3 | 1.4 | 2 |
|2017-12-02| 9 | 1.3 | 7 |
|2017-12-03| 3 | 1.0 | 2 |
|2017-12-03| 10 | 1.0 | 1 |
|2017-12-03| 9 | 1.3 | 7 |
PS:
我可能对这个问题不太清楚,因此很乐意回答疑问并重新编辑正在进行的帖子。