我有一个场景,我想检查列(Col1
)中连续的pandas数据帧行是否满足最小标准(0.6),这也符合起始值至少的标准( 0.7)即:
Col1
0.3
0.5
0.55
0.8 = true
0.65 = true
0.9 = true
0.61 = true
0.3
0.6
0.67
0.74 = true
0.63 = true
0.61 = true
换句话说,如果值至少为0.7,或者如果该值至少为0.6且前面的值至少为0.6且连续序列中的第一个值为0,则检查将为True
至少0.7。
它将运行一个非常大的数据集,因此需要高效。我认为shift()
的某些内容会起作用......但是不能正确使用它。
答案 0 :(得分:3)
您可以使用Series.where()
构建逻辑系列。
步骤:
nan
值初始化系列; 这样:
import pandas as pd
import numpy as np
df['check'] = np.nan
df['check'] = (df['check'].where(df.Col1 < 0.7, True)
.where(df.Col1 > 0.6, False)
.ffill().fillna(False)
.astype(bool))