假设我有以下数据集
[[0 1994]
[0 1965]
[0, 1943]
[1, 1994]
[1,1965]
[2, 1948]]
我希望通过使用numpy或Pandas方法而不是循环将数据分离到基于第一行中的值的单个数组来实现以下输出。
[
[[0 1994]
[0 1965]
[0 1943]]
[[1 1994]
[1 1965]]
[[2, 1948]]
]
答案 0 :(得分:2)
根据第一列的差异找出预期的指数' items然后根据这些索引拆分数组:
In [22]: inds = np.where(np.diff(a[:,0]) != 0)[0] + 1
In [23]: np.split(a, inds)
Out[23]:
[array([[ 0, 1994],
[ 0, 1965],
[ 0, 1943]]), array([[ 1, 1994],
[ 1, 1965]]), array([[ 2, 1948]])]
答案 1 :(得分:1)
pandas的方法是将数据传递给DataFrame
然后groupby
操作:
df = pd.DataFrame(data)
df.groupby(0).apply(lambda x: x.values).values
输出:
[array([[ 0, 1994],
[ 0, 1965],
[ 0, 1943]]), array([[ 1, 1994],
[ 1, 1965]]), array([[ 2, 1948]])]