如何将pandas DataFrame拆分为多个DataFrame?

3

我有一个包含231840行数据的数据框。我需要将其分成161个独立的表格,每个表格包含1440行,即第一个表格包含前1440行,第二个表格包含接下来的1440行,以此类推,直到得到161个独立表格,总行数为231840行。有什么想法吗?

2个回答

7
你可以使用np.array_split来分割数据框:
import numpy as np

dfs = np.array_split(df, 161) # split the dataframe into 161 separate tables

编辑(根据dfs中df的顺序号分配新列):

dfs = [df.assign(new_col=i) for i, df in enumerate(dfs, 1)]

非常感谢!如果我想在我的初始数据框中创建一个新列,其中会显示从第1行开始一直到第1440行的数字“1”,然后依此类推直到“161”,我该如何应用此函数呢? - Rauan Saturin
@RauanSaturin,请检查我已经在答案中添加了它。 - Shubham Sharma
由于dfs的输出格式为“列表”,我该如何从dfs中提取此“new_col”并使其成为我的df数据框的一部分? - Rauan Saturin
“将其作为 df 的一部分”是什么意思?你能再解释一下吗? - Shubham Sharma
当然。例如,'df' 是我的初始数据框,有231840行和10列。我想在这个'df' 数据框中创建一个新的列,它会在每1440行后按顺序给出数字,即第一组1440行在该新列中具有编号'1',第二组1440行在该新列中具有编号'2',以此类推,直到最后1440行为止,编号为'161'。在您所提供的答案中,'dfs'是以列表格式存在,我无法从中提取这个'new_col'并将其传递给我的初始'df'数据框。希望我讲得更清楚 :) - Rauan Saturin
df['new_col'] = [i for i, df in enumerate(dfs, 1) for _ in range(len(df))] 这个怎么样? - Shubham Sharma

1
简单地使用
import numpy as np

df_list = np.array_split(df, 3) # replace 3 with the amount of rows you want

在您的情况下,您应该将3替换为df(len) // desired_row_amount。我们使用//将结果四舍五入为整数。
或者您可以采用老派的方法,使用for循环,类似于以下内容:
rows = 100  # example number of rows
df_list = []  # list to store dfs

for i in range(len(df) // rows):
    if i == len(df) // rows:  # if this is the last part of the df
        df_list.append(df[i*rows:])  # append the dataframe rows left
    else:
# append with a dataframe which has the desired amount of rows
        df_list.append(df[i*rows:(i+1)*rows]) 

非常感谢!如果我想在我的初始数据框中创建一个新列,该列将显示前1440行的数字“1”,以此类推直到“161”,我该如何应用此函数? - Rauan Saturin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接