【发布时间】:2017-02-04 10:50:10
【问题描述】:
我对编程非常陌生(
我有一个数据表,它取自 csv 文件并编译成 3 列,有几千行。我已经根据某些条件过滤掉了很多行,留下了大约 200 行(但由于初始排序,其索引约为 8000-8300)。现在我正在尝试查找另一列中出现最高值的时间(其中一列)。当我运行下面的代码时,它给了我一个错误“索引超出范围”。我在这里阅读了关于同一错误消息的另一个问题,但我真的不明白如何在这里应用答案。
maxrow=df['A'].idxmax()
maxA=df['A'].irow(maxrow)
maxtime = df['time'].irow(maxrow)
maxB = df['B'].irow(maxrow)
我知道第一行是查找 A 处于最大值的行并分配一个变量“maxrow”来获得该行号。 第二行是创建一个变量 maxA 并将在 A 列的最大行中找到的值分配给它。 然而,在这个阶段,它似乎产生了一个问题。我应该提一下,如果我在第 3 行、第 4 行和第 5 行插入小于 200 的行号而不是“maxrow”,则完全没有问题(除了选择的行不正确)。
所以我认为程序以某种方式根据其索引号识别最大行,但是当涉及到使用它时,它正在使用行的实际新顺序,其中还不够。
有人可以帮忙吗? 谢谢
【问题讨论】:
-
.irow(maxrow)已弃用,您应该使用.iloc[maxrow] -
df['A'].loc(maxrow)有效吗?iloc()是基于整数的,loc()是基于标签的。 -
谢谢!这几乎行得通。它不会抛出任何错误消息,但现在当我打印出“maxrow”和“maxtime”的值时,它会给出“
”而不是值。跨度> -
顺便说一句,这与我使用 loc() 还是 iloc() 无关。我很想知道在编程环境中“弃用”是什么意思。