首页 > 解决方案 > Python数据帧转置时间序列(行到列)

问题描述

我想从这个时间序列转置(?)/转换:

values = ['Date Value   Value_30days_later',
'26.01.01   36  40.3',
'29.01.01   36  38.2',
'30.01.01   37.5    36.5',
'31.01.01   37.5    37.3',
'01.02.01   37  36.7',
'02.02.01   37.5    36.5',
'05.02.01   35  33',
'06.02.01   32.5    26.5',
'07.02.01   31  25.3',
'08.02.01   30.5    29',
'09.02.01   32.3    30.3']

看起来像这个

values = ['Date Value_-4    Value_-3    Value_-2    Value_-1    Value_0 Value_30days_later',
'01.02.01   36  36  37.5    37.5    37  36.7',
'02.02.01   36  37.5    37.5    37  37.5    36.5',
'05.02.01   37.5    37.5    37  37.5    35  33',
'06.02.01   37.5    37  37.5    35  32.5    26.5',
'07.02.01   37  37.5    35  32.5    31  25.3',
'08.02.01   37.5    35  32.5    31  30.5    29',
'09.02.01   35  32.5    31  30.5    32.3    30.3']

所以基本上基于Date将 5 个Value行转换为列并将Value_30days_later添加 到它。

基于原始时间序列中的日期,我想要一个时间序列,其值为0-4(包括当前日期在内的最后 5 个日期)和 30 天后的值。

是否有使用例如 pandas 或 numpy 的简单功能?

标签: pythonpandasdataframenumpy

解决方案


我现在通过使用此功能得到它

    def create_lags():
    
    
    for lags in range(0,5):
        time_series['value_lag_-'+str(lag)] = time_series['value'].shift(+lag)

这个.shift 函数为我做的。


推荐阅读