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      -