如果你有一只熊猫DataFrame({'a':[1,2,3,4,5,6,7,8,9]})
,有没有一种简单的方法可以将它分成 3 组或任意数量的组?
我知道这可以通过添加一个包含允许分组的值的额外列来完成,例如,您可以将上述 DataFrame 加入并按添加的[1,1,1,2,2,2,3,3,3]
列分组。但似乎不需要为此操作添加额外的列。
我还可以创建一个索引np.linspace(0,9,4)
数组并使用它们作为 DataFrame.ix[] 的参数循环遍历数组值,但这对于大型 DataFrame 来说似乎并不快。
我错过了更简单的方法吗?
==解决方案==
从下面的答案中,我首选的解决方案是使用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。