计算范围内外列表元素的平均值

Calculate mean of list elements inside and outside of range

我有以下数据框:

import pandas as pd
mydict = {'ref_start': {0: 73, 1: 93, 2: 107, 3:150},
          'ref_end': {0: 74, 1: 95, 2: 109, 3:150}}
mydf = pd.DataFrame(mydict, columns = ["ref_start", "ref_end"])

表示索引的开始和结束 (plus 1, because my "ref_start" / "ref_end" is 1-indexed),在我的列表中:

import numpy as np
import random
randomlist = []
for i in range(0,200):
    n = random.randint(5,60)
    randomlist.append(n)

现在,我想 (1) 计算 ref_startref_end 范围内的元素的平均值:

mymean=[]
for i in range(0, len(mydf)):
   if randomlist[mydf.iloc[i]['ref_start']-1] == mydf.iloc[i]['ref_end']-1:
       mymean.append(np.mean(randomlist[mydf.iloc[i]['ref_start']-1]))
   else:
       mymean.append(np.mean(randomlist[mydf.iloc[i]['ref_start']-1:mydf.iloc[i]['ref_end']-1]))

但是,如何获得 mydf 之外范围的平均值,即。从 1(开始)到 72、75 到 92、96 到 106、110 到 149、151 到结束?

我现在是这样解决的:

elsemean=[]
for i in range(0,len(mydf)):
    if i == 0:
        elsemean.append(np.mean(randomlist[:int(mydf.iloc[i]["ref_start"]-1)]))
    if mydf.iloc[i]["ref_start"] == mydf.iloc[i]["ref_end"]:
        pass
    if i == len(mydf)-1:
        elsemean.append(np.mean(randomlist[int(mydf.iloc[i]["ref_end"]+1):]))
    else:
        i += 1
        elsemean.append(np.mean(randomlist[int(mydf.iloc[i-1]["ref_end"]+1):int(mydf.iloc[i]["ref_start"]-1)]))