如何选择满足另一列熊猫条件的最小值的所有行

时间:2019-10-27 21:50:01

标签: python pandas

我想从我的数据集中选择所有Points = 0且在Day列中具有最小值的行。

数据框

require(shiny)
require(shinythemes)

side_width <- 5

sidebar_panel <-
  sidebarPanel(
    width = side_width,
    radioButtons("Radio1",
                 label = h4("Radio label 1"),
                 choices = list("Europe" = "EU", 
                                "USA" = "US"), 
                               selected = "EU"),
hr()
br()

    radioButtons("Radio 2", 
                 label = h4("Radio label 2"),
                 choices = list("Annual" = 1, "Monthly" = 12), 
                             selected = 1)

  )

main_panel <- mainPanel(
    width = 12 - side_width,


                     wellPanel(

                     h5(helpText("Figure 1: ..."))
                               ), 

                     wellPanel(
                       h5(helpText("Table 1: ..."))
                              ),

                     wellPanel(
                       h5(helpText("Table 2: ..."))
                               ),

                     wellPanel(
                              fluidRow(
                              column(12,

                                h5(helpText("Table 3: ..."))
                                    )
                                 )

                       )
)

# user interface
ui <- shiny::navbarPage("testing shiny", 

  tabPanel("Tab1",
    sidebarLayout(
    sidebarPanel = sidebar_panel,
    mainPanel = main_panel,
    position = "left")
           ),

  tabPanel("Tab2",
    verbatimTextOutput("summary")
            ),

  tags$style(type="text/css", "body {padding-top: 70px;}"),
  theme=shinytheme("cosmo"),
  position ="fixed-top"

)

server <- function(input, output) {

}

shinyApp(ui = ui, server = server)

我希望得到的东西

Points  Day  Name
55       0   Jon
0        7   Ron
0        8   Sam
44       6   Chris
0        7   Joan
49       2   Greg

我已经对这段代码感到厌倦了,但是我只得到了第一个真实的实例。

Points  Day  Name
0        7   Ron
0        7   Joan

如何获取所有行?

3 个答案:

答案 0 :(得分:1)

您可以使用min函数从点== 0的已过滤数据集中获取最小值,然后使用它来过滤整个数据集。

df[(df["Points"] == 0) & (df["Day"] == min(df[df["Points"] == 0]["Day"]))]

现在可以使用了

>>> df
   Points  Day
0      55    0
1       0    7
2       0    8
3      44    6
4       0    7
5      49    2

>>> df[(df["Points"] == 0) & (df["Day"] == min(df[df["Points"] == 0]["Day"]))]
   Points  Day
1       0    7
4       0    7

答案 1 :(得分:1)

IIUC

df.query('Points==0').loc[lambda x : x['Day']==x['Day'].min()]
Out[207]: 
   Points  Day  Name
1       0    7   Ron
4       0    7  Joan

答案 2 :(得分:0)

您可以通过以下方式进行操作:

df[(df['Points']==0) & (df['Day']==df[df['Points']==0]['Day'].min())]

&表示熊猫布尔索引中的AND,如果要使用OR,则可以使用|。