Python 3.x 如何在包含nan的列表中查找最小和最大元素

Python 3.x 如何在包含nan的列表中查找最小和最大元素,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个dataframe,它有一个名为“score”的列。我正在将该列中的所有元素提取到一个列表中。它有‘南’在中间。我希望在每个“nan”出现之前确定元素的最小值和最大值 我正在考虑将该列转换为列表,并遍历该列表,直到遇到“nan”。但是我如何遍历回去找到nan之前的min和max元素呢 这是我编写的代码,用于将数据帧的一列转换为列表,然后标识“nan” 假设我的数据是这样的 11.03680137760893 5.351482041139766 10.10019513222711

我有一个dataframe,它有一个名为“score”的列。我正在将该列中的所有元素提取到一个列表中。它有‘南’在中间。我希望在每个“nan”出现之前确定元素的最小值和最大值

我正在考虑将该列转换为列表,并遍历该列表,直到遇到“nan”。但是我如何遍历回去找到nan之前的min和max元素呢

这是我编写的代码,用于将数据帧的一列转换为列表,然后标识“nan”

假设我的数据是这样的

 11.03680137760893
 5.351482041139766
 10.10019513222711
 nan
 0.960990030082931
 nan
 6.46983084276682
 32.46794015293125
 nan
然后,我应该能够将max识别为11.036801377660893
第一个“nan”发生前的最小值为5.351482041139766,第二个nan发生前和第一个nan发生后的最小值和最大值为0.96099030082931,在第二个“nan”之后和第三个“nan”之前,最大值为32.46794015293125,最小值为6.46983084276682

您可以通过使用测试缺失值来创建组,通过使用
min
max
聚合,最后通过以下方法仅删除缺失的行:


您可以通过以下方式创建组:使用测试缺少的值,使用
min
max
进行聚合,最后通过以下方式仅删除缺少的行:


您可以创建两个名为min和max的变量,每次找到nan并打印(或存储)时都以默认值开头

导入系统 分数列表=描述分数['score'].tolist() max=sys.float\u info.min 最小值=sys.float\u info.max 对于得分列表中的i: 印刷品(一) 如果math.isnan(i): 打印(“max=,max,“min=,min,”\n) max=sys.float\u info.min 最小值=sys.float\u info.max 其他: 如果i>max: max=i 如果i每次找到nan并打印(或存储)时,您可以创建两个名为“最小”和“最大”的变量,以默认值开头

导入系统 分数列表=描述分数['score'].tolist() max=sys.float\u info.min 最小值=sys.float\u info.max 对于得分列表中的i: 印刷品(一) 如果math.isnan(i): 打印(“max=,max,“min=,min,”\n) max=sys.float\u info.min 最小值=sys.float\u info.max 其他: 如果i>max: max=i 如果i可能重复的可能重复谢谢,我在一个单独的数据框中获取最小值和最大值,但最小值和最大值需要在原始数据框中及其“分数”列中。我该怎么做呢?谢谢,我在一个单独的数据框中获取最小值和最大值,但是最小值和最大值需要在原始数据框中的“score”列中。我该怎么做?
 11.03680137760893
 5.351482041139766
 10.10019513222711
 nan
 0.960990030082931
 nan
 6.46983084276682
 32.46794015293125
 nan
df = df.groupby(df['score'].isna().cumsum())['score'].agg(['min','max']).dropna()
print (df)
            min        max
score                     
0      5.351482  11.036801
1      0.960990   0.960990
2      6.469831  32.467940
import sys

score_list = description_df['score'].tolist()
max = sys.float_info.min
min = sys.float_info.max
for i in score_list:
    print(i)
    if math.isnan(i):
        print("max =", max, "min =", min, "\n")
        max = sys.float_info.min
        min = sys.float_info.max
    else:
        if i > max:
            max = i
        if i < min:
            min = i