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]
中引用了下面的行,因此您可能希望迭代到最后一行之前,并指定循环之后最后一行的值