在第一列中按相同值对数据中的列进行分组

时间:2014-04-02 02:52:09

标签: python numpy

所以我试图找出一种方法来对第一列中具有相同值的数据中的所有行进行分组。

所以说我有:

col 1:     col 2:
0          3
0          4
0          5
1          9
1          10
2          7

我想使用一些基本的python或numpy来读取col 1中的数据并找到所有那些有0和group在一个列表或其他内容排成一列的数据,然后是所有那些有1 in的col1等。如果数字在第1列中增加1,我能够弄明白这一点,但我的输入有任何浮动,因此不可靠。

1 个答案:

答案 0 :(得分:1)

我过去曾经使用过这种方法,试图避免使用for u in np.unique或使用pandas或itertools.groupby的掩码:

np.split(col2, np.where(np.diff(col1))[0]+1)

适用于col1中的花车:

col1 = np.sort(np.repeat(np.random.rand(4), np.random.randint(2,4,4)))
col2 = np.arange(len(col1))

col1
#array([ 0.39855008,  0.39855008,  0.84331316,  0.84331316,  0.94124952,
#        0.94124952,  0.94124952,  0.9480605 ,  0.9480605 ,  0.9480605 ])

np.split(col2, np.where(np.diff(col1))[0]+1)
#[array([0, 1]), array([2, 3]), array([4, 5, 6]), array([7, 8, 9])]