【时序数据处理】pandas某些列由于n个数据导致的,通过Series生成Dataframe

简述

经常会遇到这样的情况,比如说,我们认为当天的温度,是由于前面几段时间的影响导致的。但是我们手头上只有温度的列表,为了捕捉到这样的特征,我们往往需要把这样的一维的数据,转成二维的数据。

实例

  • 初始数据:左边是index,右边是真实数据
0    1
1    2
2    3
3    4
4    5
dtype: int64
  • 如果我们认为当前的数据是由于前面两天的数据导致的,就会需要下面的矩阵
dtype: int64
   c0  c1  y
0   1   2  3
1   2   3  4
2   3   4  5

这个方法应该是比较常用的,但是却没有写出具体的内容。所以,我想需要添加这个函数。

函数

  • 函数名:generate_df_affect_by_n_days
  • series 要求为一个series,n要求为一个整数
  • 返回的是一个dataframe
def generate_df_affect_by_n_days(series, n):
    if len(series) <= n:
        raise Exception("The Length of series is %d, while affect by (n=%d)." % (len(series), n))
    df = pd.DataFrame()
    for i in range(n):
        df['c%d' % i] = series.tolist()[i:-(n - i)]
    df['y'] = series.tolist()[n:]
    return df
  • 完整的测试函数:
import pandas as pd

def generate_df_affect_by_n_days(series, n):
    if len(series) <= n:
        raise Exception("The Length of series is %d, while affect by (n=%d)." % (len(series), n))
    df = pd.DataFrame()
    for i in range(n):
        df['c%d' % i] = series.tolist()[i:-(n - i)]
    df['y'] = series.tolist()[n:]
    return df

s = pd.Series([1, 2, 3, 4, 5])
print(s)
df = generate_df_affect_by_n_days(s, 2)
print(df)

你可能感兴趣的:(Python,数据处理,python,pandas,dataframe,时序数据)