Python 3.x pandas:尝试遍历数据帧中的行时出现索引错误
我正在将一个脚本从Matlab转换为Python,用于处理信号处理。我目前正在使用的函数查看一组通用数据,以查找出现频率和阶跃响应的时间戳。基本上,如果缺少一段时间,这意味着发生了来自机器的输入,因此我需要解析来自不同csv文件的数据。以下是数据帧的基本布局: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 .
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你是对的,我需要从范围中减去,而不是相加。谢谢你的帮助!