我想从我的数据集中选择所有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
如何获取所有行?
答案 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,则可以使用|。