seu*_*mas 2 python numpy pandas
如果你有一只熊猫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))
Run Code Online (Sandbox Code Playgroud)
split_df是一个列表,其中第一个对象是空的numpy数组,以下对象是拆分的DataFrame.
根据你的例子DataFrame:
In [25]: df.index/3
Out[25]: Int64Index([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int64)
In [26]: for k,g in df.groupby(df.index/3):
...: print k,g
...:
0 a
0 1
1 2
2 3
1 a
3 4
4 5
5 6
2 a
6 7
7 8
8 9
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2528 次 |
| 最近记录: |