基于价值的单独数据

时间:2018-04-21 05:59:22

标签: python python-3.x pandas numpy

假设我有以下数据集

 [[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]]
              ]

2 个答案:

答案 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]])]