Python 3.x pandas:尝试遍历数据帧中的行时出现索引错误

Python 3.x pandas:尝试遍历数据帧中的行时出现索引错误,python-3.x,pandas,Python 3.x,Pandas,我正在将一个脚本从Matlab转换为Python,用于处理信号处理。我目前正在使用的函数查看一组通用数据,以查找出现频率和阶跃响应的时间戳。基本上,如果缺少一段时间,这意味着发生了来自机器的输入,因此我需要解析来自不同csv文件的数据。以下是数据帧的基本布局: Time Stamp (sec) PCmd (deg) PPos (deg) ... Volts Flags Counter 0 96.676872 -0.0161 -0.1290 .

我正在将一个脚本从Matlab转换为Python,用于处理信号处理。我目前正在使用的函数查看一组通用数据,以查找出现频率和阶跃响应的时间戳。基本上,如果缺少一段时间,这意味着发生了来自机器的输入,因此我需要解析来自不同csv文件的数据。以下是数据帧的基本布局:

   Time Stamp (sec)  PCmd (deg)  PPos (deg)  ...   Volts  Flags  Counter
0         96.676872     -0.0161     -0.1290  ...  98.230      0       20
1         96.683545      0.0000     -0.0645  ...  58.421      0       43
2         96.690234      0.0000      0.0000  ...  98.747      0       49
3         96.696512      0.0000     -0.0645  ...  72.380      0       73
4         96.703550      0.0000     -0.0645  ...  66.176      0       94
它有6065行和12列

此函数的目的是创建一个嵌套的排序列表,其中事件之间的间隔存储为列表中的元素。每个元素都是整个数据帧的一部分。这就是我的“outmat”列表。”zeromat'是数据帧zbreaks'是一个列表,用于存储响应/不连续发生位置的索引值

我的错误发生在第一个if语句中,在该语句中,我将比较两个连续的值,以查看时间差是否超出可接受的范围

# set constants
sampledis=5
dt = 1/128

# set DataFrame variable
zeromat = df1

# set variables for row & col length
zr = zeromat.shape[0]
zc = zeromat.shape[1]

#initialize lists 
zbreaks = []
outmat = []

# Find the discontinuities
for m in range(zr+2):
    # Line where IndexError is occurring 
    if (int(zeromat.iloc[m+1,0])-int(zeromat.iloc[m,0])) > (dt*sampledis):
            zbreaks.append(m)

# Parse zeromat into cell array
if len(zbreaks) != 0:
    outmat.append(zeromat.iloc[:zbreaks[0],])
显示的错误为“索引器:单个位置索引器超出范围”


如果需要更多信息,请告诉我,并提前感谢

您的
df
的长度只有
zr
(在您的示例中为5),因此您可以使用
iloc
将其索引到
zr-1
(4)。然而,在循环中,您试图将其索引到
zr+2
(7),这是不可能的。你的意思可能是
对于范围内的m(zr-2)
@ALollz你是对的,我需要从范围中减去,而不是相加。谢谢你的帮助!您的
df
的长度只有
zr
(在您的示例中为5),因此您可以使用
iloc
将其索引到
zr-1
(4)。然而,在循环中,您试图将其索引到
zr+2
(7),这是不可能的。你的意思可能是
对于范围内的m(zr-2)
@ALollz你是对的,我需要从范围中减去,而不是相加。谢谢你的帮助!