问题描述
我有一个只有一列的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)