Python 数据帧索引操作未按预期工作
我当前的代码Python 数据帧索引操作未按预期工作,python,pandas,dataframe,Python,Pandas,Dataframe,我当前的代码 M = pd.DataFrame(index=range(10), columns=range(6)) for i in M.index: M.loc[i,0:2] = 1550 for i in M.index: M.loc[i,3:6] = 300 ######################################################################### FOa = 0.00123 i = 0 j = 1 wh
M = pd.DataFrame(index=range(10), columns=range(6))
for i in M.index:
M.loc[i,0:2] = 1550
for i in M.index:
M.loc[i,3:6] = 300
#########################################################################
FOa = 0.00123
i = 0
j = 1
while i < 10:
while j < 3:
M.iloc[i,j] = (1+2*FOa)*M.iloc[i+1,j] - FOa*(M.iloc[i+1,j-1] + M.iloc[i+1,j+1])
j = j +1
i = i + 1
我的问题是,为什么只修改第2列的第一行,而不是全部 因为
j
的值仅在两个循环之外赋值,因此在内部循环的第一次迭代之后j
为3,并且不会为后续行输入循环
此问题可以通过以下方式解决:
while i < 10:
j = 1
while j < 3:
M.iloc[i,j] = (1+2*FOa)*M.iloc[i+1,j] - FOa*(M.iloc[i+1,j-1] + M.iloc[i+1,j+1])
j = j +1
i = i + 1
当i<10时:
j=1
而j<3:
M.iloc[i,j]=(1+2*FOa)*M.iloc[i+1,j]-FOa*(M.iloc[i+1,j-1]+M.iloc[i+1,j+1])
j=j+1
i=i+1
但是,由于您在
M.iloc[i+i,j]
中引用了下面的行,因此您可能希望迭代到最后一行之前,并指定循环之后最后一行的值 因为j
的值仅在两个循环之外赋值,因此在内部循环的第一次迭代之后j
为3,并且不会为后续行输入循环
此问题可以通过以下方式解决:
while i < 10:
j = 1
while j < 3:
M.iloc[i,j] = (1+2*FOa)*M.iloc[i+1,j] - FOa*(M.iloc[i+1,j-1] + M.iloc[i+1,j+1])
j = j +1
i = i + 1
当i<10时:
j=1
而j<3:
M.iloc[i,j]=(1+2*FOa)*M.iloc[i+1,j]-FOa*(M.iloc[i+1,j-1]+M.iloc[i+1,j+1])
j=j+1
i=i+1
但是,由于您在M.iloc[i+i,j]
中引用了下面的行,因此您可能希望迭代到最后一行之前,并指定循环之后最后一行的值