如何在ndarray中对一列进行分组,然后打印整行

时间:2018-02-11 22:42:32

标签: python arrays

我有一个看起来像的数组:

sna = 
[[      5376       5562 1487764215          7]
 [      5000       5101 1487764215          8]
 [      3305       3510 1487764215          9]
 [      3511       3642 1487764240          3]
 [      9748      10320 1487764240          4]
 [      9202       9747 1487764260          7]
 [      6793       7173 1487764260         14]...]

我想将col3中连续编号和col2中相同编号的编号组合在一起。

我有一些东西可以正确地将它们组合在一起,但只打印出col4:

for k, g in groupby(enumerate(sna[:,3]), lambda(i, x): i-x):
    print map(itemgetter(1), g)

使用这种方法甚至可以打印出整行,还是我需要以其他方式解决这个问题?

我正在寻找的输出是这样的:

[[      5376       5562 1487764215          7]
 [      5000       5101 1487764215          8]
 [      3305       3510 1487764215          9]]
[[      3511       3642 1487764240          3]
 [      9748      10320 1487764240          4]]

1 个答案:

答案 0 :(得分:0)

对于遇到同样问题的人,我最终将其放入熊猫数据框:

-- Duplicate the definition of your table.
CREATE TEMP TABLE my_table_stage (LIKE my_table INCLUDING DEFAULTS);


-- Your COPY statment
COPY my_table FROM 'my_file.csv' ...


-- Insert any "new" records
INSERT INTO my_table (key_field, data_field1, data_field2)
SELECT
    stg.key_field,
    stg.data_field1,
    stg.data_field2
FROM
    my_table_stage stg
WHERE
    NOT EXISTS (SELECT 1 FROM my_table WHERE key_field = stg.key_field);


-- Update any existing records
UPDATE my_table orig
SET
    data_field1 = stg.data_field1,
    data_field2 = stg.data_field2
FROM
    my_table_stage stg
WHERE
    orig.key_field = stg.keyfield;