使用.loc和多个条件从DataFrame中选择行,然后显示与一列的最小值/最大值相对应的行

时间:2019-04-01 21:02:32

标签: python pandas dataframe

我知道如何使用.loc和多个条件来选择数据,就像这样:

df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')] 

但是从结果来看,我无法弄清楚如何显示对应于另一列数字“ C”的最小值(或最大值)的整行。我该怎么做?

4 个答案:

答案 0 :(得分:2)

使用此:

df2 = df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')]

df2.loc[df2.C == df2.C.min(), :]

答案 1 :(得分:0)

您可以使用idxminidxmax函数。

Docs for the idxmin function:“返回最小值的行标签。如果多个值等于最小值,则返回具有该值的第一行标签。”

所以,如果你 df.loc[((df['A'] == True) & (df['B'] == 'Tuesday')).idxmix()],这将返回具有C列最小值的行。

答案 2 :(得分:0)

使用此:

对于列:

Context

对于行:

df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')].apply(max, axis=0) 

答案 3 :(得分:0)

最简单的选择:

df = pd.DataFrame({
          'A': [True,False,True,True],
          'B': ['Sun', 'Mon', 'Tue', 'Tue'],
          'C': [1,4,5,1],
          'D': [10,20,30,40]})

print(df.query(""" A == True and B == 'Tue' and C == C.min() """))

      A    B  C   D
3  True  Tue  1  40