Python iloc выдает ошибку привязанного индексатора - PullRequest
0 голосов
/ 10 октября 2019
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import csv
with open('C:\PhD\Images\FD19\\count_post_1-2.csv') as csv_file:
 df1=pd.read_csv(csv_file, delimiter=',')

name=[] 
means=[0]*(len(df1))

key=df1['id']
key2=[]
mean=[]
tot=df1['count']-df1['spurious']+df1['undet']
df1['tot']=tot
df1['mean']=means

for i in range (0,len(df1)):
 k=key[i][:-1]

 key2.append(k)

key3=list(dict.fromkeys(key2))


 for m in key3:


        if str(m)+str(1)==df1.iloc[i,1] and str(m)+str(2)==df1.iloc[(i+1),1] and str(m)+str(3)==df1.iloc[(i+2),1] :

         av=((df1.iloc[i,5]+df1.iloc[i+1,5]+df1.iloc[i+2,5])/3) 
        # print(str(m)+str(1),df1.iloc[i,1])
         # print(av)
         # df1.iloc[i+2,6]=av

Код не работает для этого цикла, но работает для следующих двух, даже если они похожи

              elif str(m)+str(1)==df1.iloc[i,1]  and str(m)+str(2)==df1.iloc[(i+1),1]: 
               avg=((df1.iloc[i,5]+df1.iloc[i+1,5])/2)  
               #print(str(m)+str(1),str(m)+str(2))
               name.append(str(m)+str(1))
               name.append(str(m)+str(2))
               df1.iloc[i+1,6]=avg

                #print(avg)
               elif str(m)+str(1)==df1.iloc[i,1]  and str(m)+str(2)!=df1.iloc[(i+1),1]: 
              avrg=(df1.iloc[i,5]  )
                 df1.iloc[i,6]=avrg
               name.append(str(m)+str(1))



    print(len(name),len(key))
    print(set(key)-set(name))
    #print(df1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...