Python 如果索引访问失败怎么办
我试图通过如下查找来访问多列数据帧中的标量值:Python 如果索引访问失败怎么办,python,pandas,Python,Pandas,我试图通过如下查找来访问多列数据帧中的标量值: targetDate = '2016-01-01' df['revenue'][df['date']== targetDate].values[0] 现在,在我的例子中,targetDate的数据帧中没有找到任何内容。因此,我得到以下索引错误: IndexError: ('index 0 is out of bounds for axis 0 with size 0', 'occurred at index 69322') 在这种情况下,是否有
targetDate = '2016-01-01'
df['revenue'][df['date']== targetDate].values[0]
现在,在我的例子中,targetDate
的数据帧中没有找到任何内容。因此,我得到以下索引错误:
IndexError: ('index 0 is out of bounds for axis 0 with size 0', 'occurred at index 69322')
在这种情况下,是否有一种内置的方法可以优雅地产生np.nan
?你会如何处理这种情况
我不希望我的脚本在找不到任何内容时失败。您可以检查
系列
是否为空,然后添加如果为空
:
targetDate = '2016-01-01'
a = df.loc[df['date']== targetDate, 'revenue']
print (a)
Series([], Name: revenue, dtype: int32)
if len(a) == 0:
print ('empty')
else:
first_val = a.values[0]
类似的解决方案包括:
您可以检查
系列
是否为空,然后添加如果为空
:
targetDate = '2016-01-01'
a = df.loc[df['date']== targetDate, 'revenue']
print (a)
Series([], Name: revenue, dtype: int32)
if len(a) == 0:
print ('empty')
else:
first_val = a.values[0]
类似的解决方案包括:
如果在前面加上
head(1)
并删除值上的下标,则可以避免出现错误消息,尽管它不会填充nan(它只是一个空的numpy数组)
但是你可以这样做,得到一个nan而不是空的
df['revenue'][df['date']== targetDate].append(pd.Series(np.nan)).head(1).values
或者像@jezrael那样做
try/except
或if/else
。当然,有很多方法可以做到这一点,这取决于什么对你来说是方便的。如果你在前面加上head(1)
并删除值的下标,那么这将避免错误消息,尽管它不会填充nan(它只是一个空的numpy数组)
但是你可以这样做,得到一个nan而不是空的
df['revenue'][df['date']== targetDate].append(pd.Series(np.nan)).head(1).values
或者像@jezrael那样做
try/except
或if/else
。当然,有很多方法可以做到这一点,这取决于什么对您方便。好的,所以只需要标准的异常处理。。。我想也许熊猫身上有某种东西。别担心。我会听从你的建议。好的,所以只需要标准的异常处理。。。我想也许熊猫身上有某种东西。别担心。我会听从你的建议。