Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果索引访问失败怎么办_Python_Pandas - Fatal编程技术网

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
。当然,有很多方法可以做到这一点,这取决于什么对您方便。

好的,所以只需要标准的异常处理。。。我想也许熊猫身上有某种东西。别担心。我会听从你的建议。好的,所以只需要标准的异常处理。。。我想也许熊猫身上有某种东西。别担心。我会听从你的建议。