如何通过提供三个包含 NaN 值的列名来切片数据框来获取值?

how to get a value by slicing a dataframe by giving three column names which also includes NaN value?

这是 ohlc 数据帧,我想从中切出 efi 的值。

brick_counts    time_id    efi
   1              nan      1000
   2              nan      1500
   3              nan      2000
   4               2       2500 
   5               2       2600
   6               2       3200 

要从此 ohlc 数据帧中切出单个值,我正在使用这行代码,

ohlc.loc[(ohlc['brick_counts'] == -5) & (ohlc['time_id'] == 2 ), 'efi'].values[0]

这条线完美地工作并给了我价值但是当我尝试应用这条线来使用 nan ,

来切片一个值时
ohlc.loc[(ohlc['brick_counts'] == 5) & (ohlc['time_id'] == float("nan")), 'efi'].values[0]

它告诉我这个错误

IndexError: index 0 is out of bounds for axis 0 with size 0

那么我应该如何使用 brick_counts 和 time_id 列的 nan 值作为我的输入 来分割 efi 的值?

如果总是存在至少一个值使用Series.isna:

ohlc.loc[(ohlc['brick_counts'] == 5) & (ohlc['time_id'].isna()), 'efi'].values[0]

如果可能没有匹配使用 nextiter:

out = next(iter(ohlc.loc[(ohlc['brick_counts'] == 5000) & (ohlc['time_id'].isna()), 'efi']), 'no match')