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

问题描述 投票:1回答:1

通过关联两个独立的数据框来创建数据框架。一切都在顺利,在它自己和Jupyter,我独立检查它。

我刚添加了另一个条件来从我的数据帧中删除一行 - 如果它是“current_edge ['street_name']的副本。这行在我测试时在Jupyter笔记本中工作,但是当我把它放入函数时。

# current_edge is a dictionary of values, edge_az is a float
# edge is my dataframe

for row in edge.index:

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

    # drop same street names
    if edge['street_name'][row] == current_edge['street_name']:
        edge = edge.drop(row)

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

老实说这超出了我:-)任何想法为什么它会在函数之外工作而不是一次被调用?

pandas jupyter-notebook keyerror
1个回答
0
投票

我怀疑在行= 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

© www.soinside.com 2019 - 2024. All rights reserved.