查找具有相同索引的最小值的数据帧行python

时间:2018-04-06 09:35:52

标签: python pandas dataframe

我有一个Dataframe,其索引设置为日期。我需要找到传感器值最小的行(每个月的参数集)。 我尝试过的代码如下:

1.optimization = r.loc[[r.index.month == month]]  
  optimization=r.loc[r['Sensors'].idxmin()]
2.optimization=DataFrame(r.resample('M').Sensors.min()) 
3.optimization=r.loc[r['Sensors'].idxmin()]
4.optimization= r.loc[r.groupby([r.index.month == month])["Sensors"].idxmin()]

我的datat farme:

Index          ACH_Base        Am          Energy                  Sensors  

2017_01_31       0.3           0.9         2.2989e+11          39087428391.1

2017_01_31       0.5           0.8         2.29892e+11         37142574944.9

....
2017_02_28       0.7           0.9         2.40001e+11         38568420286.9

2017_02_28       0.3           0.7         2.7136+11           36945759284.8

....

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Resampler.transform获取每month的最小值,与Sensors进行比较并按boolean indexing过滤:

df.index = pd.to_datetime(df.index, format='%Y_%m_%d')

df = df[df['Sensors'] == df.resample('M')['Sensors'].transform('min')]
print (df)
            ACH_Base   Am       Energy       Sensors
2017-01-31       0.5  0.8  2.29892e+11  3.714257e+10
2017-02-28       0.3  0.7    2.7136+11  3.694576e+10