首页 > 解决方案 > 如何在熊猫数据框中获取最小值后的所有记录

问题描述

如何获取所有记录(在最小值之后)

例如:最小值为 7,我想获取它之后的所有记录。

Date             Value    
2020-03-11       20 
2020-02-25       10
2020-02-20       7.5      
2020-02-15       7        
2020-01-10       10       
2019-12-07       15       

我试过了

min1=dfs[i].loc[dfs[i]['Value'] == dfs[i]['Value'].min()]['Date'].values[0]
dfs[i][min1:]

但这引发了错误“TypeError:无法使用这些索引器 [2020-02-12T00:00:00.000000000] 进行切片索引”

注意:我有一个数据框列表。

标签: pythonpandassearch

解决方案


假设 DataFrame 包含:

          Date  Value
A1  2020-03-11   20.0
H2  2020-02-25   10.0
E3  2020-02-20    7.5
C4  2020-02-15    7.0
B5  2020-01-10   10.0
M6  2019-12-07   15.0

为了证明我的方法适用于所有可能的情况,我特意选择了非数字和非单调索引,但索引必须是唯一的。

注意:

  1. idxm = df.Value.idxmin()获取具有最小值的行的 索引- C4

  2. df.loc[:idxm].index检索索引的“初始”部分,直到“最小”行(包括) - Index(['A1', 'H2', 'E3', 'C4'], dtype='object')

  3. df.index.difference(df.loc[:idxm].index)检索索引的另一部分 - Index(['B5', 'M6'], dtype='object')

所以这导致结论正确的表达式是:

df.loc[df.index.difference(df.loc[:idxm].index)]

这个表达式的结果是:

          Date  Value
B5  2020-01-10   10.0
M6  2019-12-07   15.0

其他可能的解决方案:

df.loc[df.Value.shift().idxmin():]

推荐阅读