簡體   English   中英

大熊貓梳理數據幀優化

[英]pandas combing dataframes optimisation

嘿,我在熊貓中有一個時間序列訂單數據集,其中某些日期缺少值來更正它,我正嘗試從以前的可用日期中獲取值。

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:我可能對這個問題不太清楚,所以很樂意回答疑問並重新編輯繼續的帖子。

您可以按天和Supplier_id對數據框進行分組,對於每個分組的數據框,將0替換為Null,然后將空填充替換為正向填充,對於早期值,您可以使用向后填充,

可能會減少您的時間

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'))

日期:

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM