pd.drop在函数之外但不在函数中工作

时间:2019-04-10 21:53:43

标签: pandas jupyter-notebook keyerror

通过关联两个独立的数据框架来创建数据框架。 一切正常,无论是单独运行还是在Jupyter中,我都可以独立进行检查。

我刚刚添加了另一条条件来从数据框中删除行-如果它是“ current_edge ['street_name']”的重复项。 测试时,此行在Jupyter笔记本中有效,但当我将其放入函数中时无效。

File inputFile = new File("epafes.txt");
File tempFile = new File("epafesTemp.txt");

BufferedReader reader2 = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String lineToRemove = del;
String currentLine;

while((currentLine = reader2.readLine()) != null) {
    // trim newline when comparing with lineToRemove
    String trimmedLine = currentLine.trim();
    if(trimmedLine.equals(lineToRemove)) continue;
    writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close();
reader2.close(); 
if (!inputFile.delete()) {
            System.out.println("Could not delete file");
            return;
        }

        //Rename the new file to the filename the original file had.
        if (!tempFile.renameTo(inputFile))
            System.out.println("Could not rename file");
        }

我希望它从当前数据帧中删除一行,但是相反,我在条件代码行“ if edge ['street_name'] ....”中收到KeyError = 0。

说实话,这超越了我:-) 有什么想法为什么它会在函数之外起作用,但是一旦调用就不能起作用?

1 个答案:

答案 0 :(得分:0)

我怀疑在row = 0时,此条件为

if abs(current_edge['edgeAzimuth_deg'] - edge_az) <= turn_angle:
        edge = edge.drop(row)

因此,删除了索引号0的行。第二个if条件试图访问索引#0,因此它给出了KeyError

if edge['street_name'][row] == current_edge['street_name']:
        edge = edge.drop(row)

在这两个print(edge.index)之间插入if,以查看在第一个if之后是否仍然存在索引号0