代码之家  ›  专栏  ›  技术社区  ›  mk_sch

在Pandas中将数据帧列拆分为相等窗口

  •  6
  • mk_sch  · 技术社区  · 7 年前

    size = 30 然后为每个数据块编写for循环,并调用其他函数。

    index = pd.date_range(start='2016-01-01', end='2016-04-01', freq='D')
    data = pd.DataFrame(np.random.rand(len(index)), index = index, columns=['random'])
    

    def split(df, chunkSize = 30): 
        listOfDf = list()
        numberChunks = len(df) // chunkSize + 1
        for i in range(numberChunks):
            listOfDf.append(df[i*chunkSize:(i+1)*chunkSize])
        return listOfDf 
    
    2 回复  |  直到 7 年前
        1
  •  7
  •   Scott Boston    7 年前

    SO Post 关于如何访问dfs和另一种分解数据帧的方法。

    n = 200000  #chunk row size
    list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]
    
        2
  •  5
  •   javidcf    7 年前

    你可以用NumPy的 array_split

    import numpy as np
    
    def split(df, chunkSize = 30):
        numberChunks = len(df) // chunkSize + 1
        return np.array_split(df, numberChunks, axis=0)
    

    即使它是一个NumPy函数,它也将返回具有正确索引和列的分割数据帧。