Python 熊猫喜欢处理iloc越界错误的方法吗?

Python 熊猫喜欢处理iloc越界错误的方法吗?,python,pandas,Python,Pandas,我有一个Excel报告,其中有几个表格排列在工作表中,我正在用Pandas对其进行解析。我从报告中删除的键、值对总是在同一列中。因此,我将查找分为键、值相同的组,并使用iloc查找正确的行: df[df.iloc[:, key_column] == 'apple'][value_column].values[0] 每个文件中都有许多密钥,但有时一个密钥不存在。在极少情况下,如果始终存在的键不存在,则整个块将失败(索引0超出大小为0的轴0的界限) 除了将每个键、值对放入它自己的中之外,请尝试…除

我有一个Excel报告,其中有几个表格排列在工作表中,我正在用Pandas对其进行解析。我从报告中删除的键、值对总是在同一列中。因此,我将查找分为键、值相同的组,并使用
iloc
查找正确的行:

df[df.iloc[:, key_column] == 'apple'][value_column].values[0]
每个文件中都有许多密钥,但有时一个密钥不存在。在极少情况下,如果始终存在的键不存在,则整个块将失败(
索引0超出大小为0的轴0的界限)

除了将每个键、值对放入它自己的
中之外,请尝试…除了
,或者在键搜索失败时提供零值的帮助函数。。。 是否有一种更像熊猫的方式来处理引发此异常(并且仍然捕获错误)的
iloc
查找?

简短的回答是“否”-我认为没有理由在可以将逻辑封装到辅助函数中时存在此类功能

如您所述,如果您只是偶尔看到
索引器
,则try/except比If/else更可取

import pandas as pd, numpy as np

df = pd.DataFrame(np.random.randint(0, 9, (1000, 10)))

res = df.loc[df.iloc[:, 20] == 6, 5].values[0]
# IndexError: index 0 is out of bounds for axis 0 with size 0

def lookup_fn(df, key_col, key_val, val_col, idx=0):
    try:
        return df[df.iloc[:, key_col] == key_val][val_col].values[idx]
    except IndexError:
        return 0

res = lookup_fn(df, 20, 6, 5)
# 0

只是想澄清一下,可能不存在的是
键列
,还是
值列
?或者,是否可能在“键”列中不存在任何此类键?是哪一个?钥匙可能不在。如果在生成报告时只有食物,并且有“订书机”要报告,那么“订书机”键就不存在了。我只是想让我的头脑去写熊猫,而不仅仅是为了这些异常值。在这份每日报告中,有两个极端——罕见的缺失和罕见的增加。在使用我看到的添加数据的两年多时间里,我建议您使用
try/except
,除非您看到性能下降(通常有太多的异常)。如果出现这种情况,您可以轻松地转到
If/else
语句。类似于:
如果键在范围内(len(df.columns)):
。。。
import pandas as pd, numpy as np

df = pd.DataFrame(np.random.randint(0, 9, (1000, 10)))

res = df.loc[df.iloc[:, 20] == 6, 5].values[0]
# IndexError: index 0 is out of bounds for axis 0 with size 0

def lookup_fn(df, key_col, key_val, val_col, idx=0):
    try:
        return df[df.iloc[:, key_col] == key_val][val_col].values[idx]
    except IndexError:
        return 0

res = lookup_fn(df, 20, 6, 5)
# 0