【问题标题】:How to transform the following dataset for time series analysis?如何转换以下数据集以进行时间序列分析?
【发布时间】:2021-12-05 00:38:28
【问题描述】:

This is the dataset, I want to transform for time series forecasting. Here, the column names contains the store number.

df=

| Date | store_1 |store_2 |store_3
|:---- |:------:| -----:|-----:|
| 1-1-21 | 0.5    | 0.2  | 0.3 |
| 1-2-21 | 0.3    | 0.7  | 0.1 |
| 1-3-21 | 0.6    | 0.9  | 0.4 |

我想将 df 转换为 df1:

Date    store number value

1-1-21   1            0.5     
1-2-21   1            0.3     
1-3-21   1            0.6     
1-1-21   2            0.2     
1-2-21   2            0.7     
1-3-21   2            0.9     
1-1-21   3            0.3     
1-2-21   3            0.1     
1-3-21   3            0.4  

【问题讨论】:

    标签: python pandas dataframe time-series


    【解决方案1】:

    使用melt:

    out = df.melt(id_vars=['Date'], var_name='Store_number', value_name='Value')
    out['Store_number'] = out['Store_number'].str.extract(r'store_(\d+)')
    print(out)
    
    # Output:
         Date Store_number  Value
    0  1-1-21            1    0.5
    1  1-2-21            1    0.3
    2  1-3-21            1    0.6
    3  1-1-21            2    0.2
    4  1-2-21            2    0.7
    5  1-3-21            2    0.9
    6  1-1-21            3    0.3
    7  1-2-21            3    0.1
    8  1-3-21            3    0.4
    

    更新

    你能建议我一种恢复原始形式的方法吗?在预测预测之后,我需要将数据框作为原始数据框。

    out = out.pivot(index='Date', columns='Store_number', values='Value') \
             .add_prefix('store_').rename_axis(columns=None).reset_index()
    print(out)
    
         Date  store_1  store_2  store_3
    0  1-1-21      0.5      0.2      0.3
    1  1-2-21      0.3      0.7      0.1
    2  1-3-21      0.6      0.9      0.4
    

    【讨论】:

    • 谢谢。有效。你能建议我一种恢复原始形式的方法吗?在预测预测之后,我需要将数据框设为原始数据框。 @Corralien
    • @Tonmoy。我更新了我的答案。请检查一下好吗?
    • 是的,它奏效了。谢谢你。这是我在 stackoverflow 上的第一篇文章。我不知道 melt 和 pivot 。我整天都在转换数据。感谢您的帮助。
    • 很高兴看到这 2 个函数对您有用。请考虑accept my answer,如果这适合您的需要:) 谢谢。
    • 完成。我不知道这个选项。谢谢你告诉我。
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2021-05-17
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2018-03-31
    • 2021-04-07
    • 2020-08-05
    相关资源
    最近更新 更多