Python 尝试和例外-了解如何使用它查找特定于日期的数据

Python 尝试和例外-了解如何使用它查找特定于日期的数据,python,Python,我一直在试图理解一段代码,其中包括Try和Except,它根据特定/要求的日期过滤数据: required_date = '2021-02-11' index_for_date = (data_dict['date'] == required_date) data_filtered_by_date = {} for key in data_dict.keys(): try: data_filtered_by_date[key] = np.float_(data_dict

我一直在试图理解一段代码,其中包括Try和Except,它根据特定/要求的日期过滤数据:

required_date = '2021-02-11'

index_for_date = (data_dict['date'] == required_date)
data_filtered_by_date = {}
for key in data_dict.keys():
    try:
        data_filtered_by_date[key] = np.float_(data_dict[key][index_for_date])
    except:
        data_filtered_by_date[key] = data_dict[key][index_for_date]

我不明白为什么要使用Try和Except,以及整个代码是如何工作的。我已经研究了一些细节,比如
np.float
,以及为什么我们使用两个相邻的叉(例如
[key][index\u for\u date]
,它们为什么在一起?)。希望我能对这段代码得到进一步的澄清,因为我对Python非常陌生,并且已经做了各种形式的研究,以便找到某种答案。让我们从解释代码开始
data\u dict
是一个数据列字典,其中一个是要筛选的
'date'
index_for_date=(data_dict['date']==必需的_date)
为列构造一个布尔索引以查找特定数据(一个数组,除与所需日期匹配外,该数组均为false)

data\u dict[key]
中的列上循环。然后,对于每个列,使用布尔索引选择与日期匹配的列:
data\u dict[key][index\u for\u date]
这就是为什么有两组方括号,第一组是dict索引,第二组是布尔数组索引


然后在
try
子句中,您尝试使用
np.float\uu
将值强制转换为float。如果失败(它引发异常),您将返回到“原始”的非铸造值。

那么,您对
np.float_uz()
有何了解?不幸的是,这是我非常困惑的原因。我建议您阅读Python异常处理教程:阅读后,您的答案可能会自己回答:)回答得很好,这真的让我明白了。但是为什么它会使用np.float来进行try-and-except呢?我认为您需要了解这段代码的上下文才能真正理解它为什么会这样做。如果数据可以源于文本文件,例如作为字符串存在于列中,并且稍后的代码将像处理浮点数据一样处理数据,那么此步骤是有意义的。这一步实际上并不是过滤本身的一部分,而是数据解析。顺便说一下,如果这个答案对你有帮助,请考虑将它标记为接受。