Python:不连续槽(3d列)上的平均值

2024-06-27 02:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在2d轴上做一些平均值,我认为python可以很方便地做到这一点,但我的python水平相当低(即使仍在进步)。 我的数据帧为3列,如下所示:

     AZ     EL      EIRP
     0.00   10.00   20.00
     0.08   10.10   21.00
     0.27   10.28   22.00
     0.34   10.45   23.00
     0.03   10.03   31.00
     0.13   10.13   32.00
     0.23   10.23   33.00
     0.33   10.33   34.00

所以我想通过平均,通过拆分二维AZ&;0.1步进的不同插槽中的EL 在该示例中,不同的插槽将是:

  1. slot1(AZ=0.05+/-0.05,EL=10.05+/-0.05):指数1和;二,;五,
  2. slot2(AZ=0.15+/-0.05,EL=10.15+/-0.05):指数6的平均值
  3. slot3(AZ=0.25+/-0.05,EL=10.25+/-0.05):指数3和;七,
  4. slot4(AZ=0.35+/-0.05,EL=10.35+/-0.05):指数4的平均值
  5. slot5(AZ=0.35+/-0.05,EL=10.45+/-0.05):指数8的平均值

    way & results of 2d averaging

首先,我创建两个列表来定义进行平均的插槽:

groupaz=np.arange(0,0.5,0.1).tolist()
groupel=np.arange(10,10.5,0.1).tolist()

按原样定义列名称后:

az=df["az"]
el=df["el"]
eirp=df["eirp"]

然后我使用了一些“for”,它工作得很好,但是对于大量数据来说,这将是相当长的一段时间,我相信python可以做得更有效,也许通过使用groupby函数。。。?我没有成功地使用它

for AZi in groupaz:
    for ELi in groupel:
        AZ0=AZi+epsilon
        EL0=ELi+epsilon
        boolaz=(df.az>=AZ0-epsilon) & (df.az<=AZ0+epsilon)
        boolel=(df.el>=EL0-epsilon) & (df.el<=EL0+epsilon)
        boolazel=boolaz & boolel
        liste_azel_eirp_mean=df.loc[boolazel,:].eirp.mean()
        if str(liste_azel_eirp_mean)!="nan":
              print (AZ0," ",EL0," ",liste_azel_eirp_mean)

谢谢你们中任何能帮助我的人。 问候


Tags: dffor指数meanelaz平均值插槽