将大数据帧拆分为较小的相等数据帧

hkm*_*kml 3 split numpy dataframe pandas

我有一个大型时间序列数据框。我想编写一个函数,将这个大数据帧任意分割成 N 个连续的子周期作为新数据帧,以便可以轻松地对每个较小的数据帧进行分析。

我有这行代码,可以将大数据帧分割成均匀的子周期。我需要一个函数来输出这些分割的数据帧。

np.array_split(df, n) #n = arbitrary amount of new dataframes
Run Code Online (Sandbox Code Playgroud)

我希望每个新的数据帧都被标记为 1,2,3,4 等,用于它代表的每个子周期。因此返回 N 个数据帧,这些数据帧均根据初始大数据帧的时间性质进行标记。

df before the function applied
 1    43.91 -0.041619
 2    43.39  0.011913
 3    45.56 -0.048801
 4    45.43  0.002857
 5    45.33  0.002204
 6    45.68 -0.007692
 7    46.37 -0.014992
 8    48.04 -0.035381
 9    48.38 -0.007053

3 new df's after function split applied 
df1
 1    43.91 -0.041619
 2    43.39  0.011913
 3    45.56 -0.048801
df2
 4    45.43  0.002857
 5    45.33  0.002204
 6    45.68 -0.007692
df3
 7    46.37 -0.014992
 8    48.04 -0.035381
 9    48.38 -0.007053
Run Code Online (Sandbox Code Playgroud)

如果任何方面需要澄清,请告诉我。谢谢你的时间!

Ron*_*nny 9

从您的描述中我不知道您是否知道np.array_split输出n对象。如果只有几个对象,您可以手动分配它们,例如:

df1, df2, df3 = np.array_split(df, 3)
Run Code Online (Sandbox Code Playgroud)

这会将每个子数组按顺序分配给这些变量。否则,您可以将一系列子数组分配给单个变量;

split_df = np.array_split(df, 3)
len(split_df)
# 3
Run Code Online (Sandbox Code Playgroud)

然后循环这个变量并对每个子数组进行分析。我个人会选择后者。

for object in split_df:
    print(type(object))
Run Code Online (Sandbox Code Playgroud)

这会打印<class 'pandas.core.frame.DataFrame'>三遍。