查找最小值和它上面的一个索引



我想隔离数据框架中包含列Price下最小值的行,但也想隔离它上面的行。下面是我在数据框中隔离包含最低价格的行的代码:

pZ = df[df.Price == df.Price.min()]

如何隔离索引1小于pZ的行?

您可以使用shift:

mask = df['Price'].eq(df['Price'].min())
df[mask|mask.shift(-1)]

虚拟的例子:

df = pd.DataFrame({'Price': [3,2,1,0,4,5]})
mask = df['Price'].eq(df['Price'].min())
df[mask|mask.shift(-1)]
输出:

Price
2      1
3      0

使用get_loc从索引中获取行号,使用idxmin()获取最小元素的索引:

pZ = df.iloc[df.index.get_loc(df['Price'].idxmin())-1]

您可以使用Series.shift()来访问周围的值。

is_min_val = df.Price == df.Price.min()
is_above_min_val = df.Price.shift(1) == df.Price.min()
pZ = df[is_min_val | is_above_min_val]

或者因为两个级数的等式本身就是一个级数

is_min_val = df.Price == df.Price.min()
pZ = df[is_min_val | is_min_val.shift(1)]

相关内容

最新更新