Выберите строки в DataFrame, используя .loc и несколько условий, а затем покажите строку, соответствующую минимуму / максимуму одного столбца. - PullRequest
1 голос
/ 02 апреля 2019

Я знаю, как выбирать данные, используя .loc и несколько условий, например:

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

Но из этого я не могу понять, как показать всю строку, соответствующую минусу (или макс.), Взятому в одном другом столбце чисел, 'C'. Как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 02 апреля 2019

Используйте это:

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

df2.loc[df2.C == df2.C.min(), :]
0 голосов
/ 02 апреля 2019

Самый простой вариант:

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
0 голосов
/ 02 апреля 2019

Используйте это:

для столбцов:

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

для строк:

df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')].apply(max, axis=1) 
0 голосов
/ 02 апреля 2019

Вы можете использовать функции idxmin или idxmax.

Документы для функции idxmin : "Возвращает метку строки минимального значения. Если несколько значений равны минимальному, возвращается метка первой строки с этим значением."

Итак, если вы df.loc[((df['A'] == True) & (df['B'] == 'Tuesday')).idxmix()], это вернет строку, которая имеет минимальное значение для столбца C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...