Python Pandas-如何在Pandas Dataframe上使用条件列表理解

问题描述

我有一个只有一列的Pandas Dataframe。我想获取一个值的数据帧的索引,该值超过2.5 * sd(预设值)。我已经确实有问题要使用条件列表理解来遍历数据框。它告诉我:

系列的真值不明确。使用a.empty,a.bool(), a.item(),a.any()或a.all()。

我的代码是:

sd = # some Kind of Formula

x = 2.5*sd

list = [i for i in df['my_column'] if i >= x]

first_val = list[0]

有人知道怎么了吗?

干杯!

编辑: DF看起来像:

  my_column

0 15.1172

1 15.1172

2 15.1172

3 5.3516

4 5.3516

      ...

5111 -43.4765

5112 5.3516

5113 5.3516

5114 15.1172

5115 -4.4140

[5116行x 1列]

float64

解决方法

这里不需要列表理解。您可以使用熊猫方法

df.loc[df['myColumn']>=x].index.tolist()[0]

详细信息:df.loc[df['myColumn']>=x]获取df,其中'myColumn'中的值为>= x。然后获得索引列表,然后选择第一个

,

简单,如下:

...
list = [i for i in df['my_column'] if i >= x]
first_val = list[0]

first_item_index = int(df[df['my_column']==list[0]].index[0]) # get index of first item with i>=x in dataframe
print(first_item_index)