我正在尝试对数据框中的列执行某些加法运算,然后将值存储在同一数据框中。我的DataFrame有3796行和11列,其中包含从1928年到2000年的数据,以及每周数据。我想对数据点进行加权平均(取决于它们的日期),然后将值存储在同一数据框中。我的代码如下:
import pandas as pd
import numpy as np
df=pd.read_excel("D:\\SUMMER INTERNSHIP CONCORDIA\\Updated Work
here\\Kitsim Reservoir (Number 220)\\Book3_Final.xlsx")
a=0
b=0
k=20
p=3
for z in range(3,11):
a=0
b=0
for x in range(1928,2000):
for y in range(0,12):
if df.iloc[a,1]==1:
df.iloc[b,k]=(7*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+3*df.iloc[a+4,z])/31
a=a+4
b=b+1
if df.iloc[a,1]==2:
df.iloc[b,k]=(4*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+3*df.iloc[a+4,z])/28
a=a+4
b=b+1
if df.iloc[a,1]==4:
df.iloc[b,k]=(1*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+7*df.iloc[a+4,z]+6*df.iloc[a+5,z])/30
a=a+5
b=b+1
if df.iloc[a,1]==3:
df.iloc[b,k]=(4*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+6*df.iloc[a+4,z])/31
a=a+4
b=b+1
if df.iloc[a,1]==5:
df.iloc[b,k]=(3*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+6*df.iloc[a+4,z])/31
a=a+4
b=b+1
if df.iloc[a,1]==6:
df.iloc[b,k]=(3*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+6*df.iloc[a+4,z])/30
a=a+4
b=b+1
if df.iloc[a,1]==7:
df.iloc[b,k]=(1*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+7*df.iloc[a+4,z]+2*df.iloc[a+5,z])/31
a=a+5
b=b+1
if df.iloc[a,1]==8:
df.iloc[b,k]=(5*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+5*df.iloc[a+4,z])/31
a=a+4
b=b+1
if df.iloc[a,1]==9:
df.iloc[b,k]=(2*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+7*df.iloc[a+4,z])/30
a=a+5
b=b+1
if df.iloc[a,1]==10:
df.iloc[b,k]=(7*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+3*df.iloc[a+4,z])/31
a=a+4
b=b+1
if df.iloc[a,1]==11:
df.iloc[b,k]=(4*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+5*df.iloc[a+4,z])/30
a=a+4
b=b+1
if df.iloc[a,1]==12:
df.iloc[b,k]=(2*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+3*df.iloc[a+4,z])/31
a=a+5
b=b+1
k=k+1
p=p+1
显示的错误是:
D:\anaconda\lib\site-packages\pandas\core\indexing.py in
_is_valid_integer(self, key, axis)
1540 l = len(ax)
1541 if key >= l or key < -l:
-> 1542 raise IndexError("single positional indexer is out-of-
bounds")
1543 return True
1544
IndexError: single positional indexer is out-of-bounds
我读到一个答案,它可能是因为我没有足够的列来存储我的值,同样,我在Dataframe中创建了50个空列,但错误仍然相同。我还要提及的是,当我尝试时,
a=0
b=0
k=20
z=3
df.iloc[b,k]=(7*df.iloc[a,z]+7*df.iloc[a+1,z]+7*df.iloc[a+2,z]+7*df.iloc[a+3,z]+3*df.iloc[a+4,z])/31
a=a+4
b=b+1
在一个单独的单元格中(没有循环),它完全可以正常工作。我现在应该如何进行!!