我有一个看起来像的数组:
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]]
答案 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;