Could you please post an example of what data you have and what you want to end up with? 1) Inserting row after row is going to be slow, whether it is pandas or pyranges. It is best to collect all the data and then create a new dataframe or PyRanges. 2) `pr.itergrs` is for iterating over multiple pyranges at the same time. It takes a list of pyranges while you seem to have a collection of tuples. The function iterates over every chromosome/strand pair in the list and for it extracts the data from every pyranges. See the code example at the end. To iterate over a pyranges you can do `for k, df in gr: # ...`. Anyways, to do what you want: import pyranges as pr import numpy as np f1 = pr.data.f1() f1.Start = ((f1.Start + f1.End)/2).astype(np.int32) # int is 64 bit f1.End = f1.Start + 1 3) I understand I have not done the addititonal processing you speak of, but if you can post an example I'm sure I'd be able to help you :) Code example `pr.itergrs`: import pyranges as pr f1 = pr.data.f1() f2 = pr.data.f2() for k, dfs in pr.itergrs([f1, f2], keys=True): print(k) for df in dfs: print("df:") print(df) ('chr1', '+') df: Chromosome Start End Name Score Strand 0 chr1 3 6 interval1 0 + 2 chr1 8 9 interval3 0 + df: Chromosome Start End Name Score Strand 0 chr1 1 2 a 0 + ('chr1', '-') df: Chromosome Start End Name Score Strand 1 chr1 5 7 interval2 0 - df: Chromosome Start End Name Score Strand 1 chr1 6 7 b 0 -