首页 > 解决方案 > 如何将一个 DataFrame 拆分为多个行数更少的 DataFrame?

问题描述

如果我有一个DataFrame由 100 行和 4 列组成的示例,我如何创建 5 个新DataFrames的,每个由 20 行和 4 列组成?

也就是说,如果原始的任意列DataFrame包含列表[0, 1, 2, 3, ..., 98, 99],我将如何创建 5 个新列DataFrames以使第一个DataFrame任意列包含列表[0, 1, 2, ..., 9],第二个DataFrame任意列包含列表[10, 11, 12, ..., 19]等等?

我尝试了以下由包含列表DataFrame的单列组成的方法,但它给了我 100 个文件,每个文件只有一行,而不是所需的 5 个 CS V 文件,每个文件有 20 行:A[0, 1, 2, 3, ..., 98, 99]CSVenter code here

import pandas as pd
import numpy as np
list = []
for i in range (0, 100):
    list.append(i)

df = pd.DataFrame(data=list, columns=['A'])
groups = df['A'].groupby(np.arange(len(df['A']/10)))
for (frameno, frame) in groups:
    frame.to_csv("/Users/ephemeralhappiness/Desktop/Cycle Test/" + "%s.csv" % frameno)

标签: pythonpandasdataframepandas-groupby

解决方案


只需将您的 groupby 更改为:

# to get 5 groups
nrows = 20
groups = df.groupby(df.index // nrows)

print(groups.ngroups)
5

推荐阅读