Python Chop系列用于构建数据帧的列

Python Chop系列用于构建数据帧的列,python,dataframe,series,Python,Dataframe,Series,有时我会得到一个序列,其中的片段(所有长度相等)属于一起。在这种情况下,我需要将序列切碎,并将片段排列成数据帧的列。例如,该系列的长度为30,我想创建一个包含三列的数据帧,其中每列分别由该系列的第一个、第二个和最后10个条目组成 我使用下面的代码,它是一个for循环,用于抓取序列的每个块并将其作为列附加到数据帧。问题是,由于for循环,速度相当慢。在熊猫身上有更好的方法吗 def series_to_dataframe(series,length,interval_length): #f

有时我会得到一个序列,其中的片段(所有长度相等)属于一起。在这种情况下,我需要将序列切碎,并将片段排列成数据帧的列。例如,该系列的长度为30,我想创建一个包含三列的数据帧,其中每列分别由该系列的第一个、第二个和最后10个条目组成

我使用下面的代码,它是一个for循环,用于抓取序列的每个块并将其作为列附加到数据帧。问题是,由于for循环,速度相当慢。在熊猫身上有更好的方法吗

def series_to_dataframe(series,length,interval_length):
    #function to convert series to dataframe such that entries
    #within [k, k+interval_length], k % interval_length == 0, are mapped to a column
  
    
    df = pd.DataFrame(index=range(0,interval_length+1))

    for k in range(0, len(series), interval_length):
        df[k] = pd.Series(series.iloc[k : k + interval_length,0].reset_index()[0])
       
    return df

我认为减慢代码速度的是数据帧的构造和重复修改。从序列构建字典,然后从该dict构建数据帧:

df = pd.DataFrame({k: series[k*interval_length:(k+1)*interval_length].array for k in range(len(series)//interval_length)}) 

我无法将计时与您的函数进行比较,因为它在给定一个系列时会引发错误。

有趣的一点。事实上,提前划分序列,然后生成一个数据帧。这可能会有帮助。我将检查计时。您也可以将系列设置为a数据帧,引入一个包含列索引的虚拟列,并使用
.pivot
,但不知何故,我希望它速度较慢,因为它涉及冗余信息存储你最初的反应就是这样。我检查了计时,结果比我的循环快15倍。谢谢