在 Pandas 中将数据框列拆分为相等的 windows
Splitting dataframe column into equal windows in Pandas
我有一个如下所示的数据框,我打算用 size = 30
提取 windows,然后为每个数据块编写 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
您可以使用列表理解。请参阅此 关于如何访问 dfs 和另一种分解数据帧的方法。
n = 200000 #chunk row size
list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]
您可以使用 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 函数,它也会 return 拆分具有正确索引和列的数据帧。
我有一个如下所示的数据框,我打算用 size = 30
提取 windows,然后为每个数据块编写 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
您可以使用列表理解。请参阅此
n = 200000 #chunk row size
list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]
您可以使用 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 函数,它也会 return 拆分具有正确索引和列的数据帧。