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)