【发布时间】:2013-02-28 17:38:59
【问题描述】:
如果你有一只熊猫DataFrame({'a':[1,2,3,4,5,6,7,8,9]}),有没有一种简单的方法可以将它分成 3 组或任意数量的组?
我知道这可以通过添加一个包含允许分组的值的额外列来完成,例如,您可以将上述 DataFrame 加入到[1,1,1,2,2,2,3,3,3] 和 groupby 添加的列。但似乎不需要为此操作添加额外的列。
我还可以创建一个索引数组 np.linspace(0,9,4) 并使用它们作为 DataFrame.ix[] 的参数循环数组值,但这对于大型 DataFrames 来说似乎并不快。
我错过了更简单的方法吗?
==解决方案==
从下面的答案中,我首选的解决方案是使用 numpy.array_split (如果与 numpy.split 不同,它不会引发异常),您还可以传递要拆分的索引数组而不是所需的结果件数。使用下面的行,您可以将 DataFrame (df) 拆分为 x 行的较小 DataFrame
split_df = np.array_split(df, np.arange(0, len(df),x))
split_df 是一个列表,其中第一个对象是一个空的 numpy 数组,后面的对象是拆分后的 DataFrame。
【问题讨论】: