【问题标题】:How can I convert multiple time-series columns into a cross-sectional data?如何将多个时间序列列转换为横截面数据?
【发布时间】:2021-01-16 14:37:30
【问题描述】:

所以我有这个数据集:

date         col1       col2       col3
20200101     1000       200        300
20200201     4400       500        150
20200301     200        300        400
.
.
.

我想把它转换成这个:

col1_t0    col1_t1    col1_t2 ... col1_tn    col2_t1    col2_t2 ... col2_tn    col3_t1    col3_t2 ... col3_tn
1000       NaN        NaN     ... NaN        200        NaN     ... NaN        300        NaN     ... NaN
4400       1000       NaN     ... NaN        500        200     ... NaN        150        300     ... NaN
200        4400       1000    ... NaN        300        500     ... NaN        400        150     ... NaN

基本上,所有 t 都是滞后的。改编自What's the most efficient way to convert a time-series data into a cross-sectional one?,同一个问题,多个系列

【问题讨论】:

  • 只需制作三个 df 并将它们连接在一起。在该问题的已接受答案中将值更改为 col1/col2/col3。

标签: python pandas dataframe time-series


【解决方案1】:

让我们试试shift

df = df.set_index('date')
out = pd.concat([df.shift(x).add_suffix(str(x)) for x in range(3)],axis=1).sort_index(level=0, axis=1)
            col10   col11   col12  col20  col21  col22  col30  col31  col32
date                                                                       
2020-01-01   1000     NaN     NaN    200    NaN    NaN    300    NaN    NaN
2020-02-01   4400  1000.0     NaN    500  200.0    NaN    150  300.0    NaN
2020-03-01    200  4400.0  1000.0    300  500.0  200.0    400  150.0  300.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 2022-08-03
    • 2016-03-04
    • 2022-11-13
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多