首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫精梳数据优化

熊猫精梳数据优化
EN

Stack Overflow用户
提问于 2018-09-14 15:54:53
回答 1查看 42关注 0票数 0

嘿,我有一个时间序列顺序数据集在熊猫与一些日期的缺失值,以纠正它,我试图从以前的日期,可得的值。

代码语言:javascript
复制
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)

为了解释代码,我正在遍历丢失的日期,然后获取丢失日期之前的值列表。然后,使用熊猫优先()获取供应商标识值地图。

现在最慢的部分是更新原始数据帧

我正在循环每个供应商并更新原始数据框架中的值。

需要建议来加快内部循环的速度

示例:

|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:我可能对这个问题不太清楚,所以很乐意回答疑问,重新编辑这篇文章。

EN

回答 1

Stack Overflow用户

发布于 2018-09-14 16:54:58

您可以按日和supplier_id对数据进行分组,对于每个分组数据,将0替换为Null,一旦使用前向填充获得空填充,则可以对早期的值使用反向填充,

它可能会减少你的时间

代码语言:javascript
复制
df.replace(0,np.nan,inplace=True)
df['values'] = df.groupby([df.supplier_id])['values'].apply(lambda x: x.replace(0,np.nan).fillna(method='ffill').fillna(method = 'bfill'))

退出:

代码语言:javascript
复制
    order_date  sku_id  supplier_id values
0   2017-12-01  1   10  1.0
1   2017-12-01  7   9   1.3
2   2017-12-01  2   3   1.4
3   2017-12-02  2   3   1.4
4   2017-12-02  7   9   1.3
5   2017-12-03  2   3   1.0
6   2017-12-03  1   10  1.0
7   2017-12-03  7   9   1.3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52335455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档