Я знаю, как выбирать данные, используя .loc и несколько условий, например:
df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')]
Но из этого я не могу понять, как показать всю строку, соответствующую минусу (или макс.), Взятому в одном другом столбце чисел, 'C'. Как мне это сделать?
Используйте это:
df2 = df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')] df2.loc[df2.C == df2.C.min(), :]
Самый простой вариант:
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
для столбцов:
df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')].apply(max, axis=0)
для строк:
df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')].apply(max, axis=1)
Вы можете использовать функции idxmin или idxmax.
idxmin
idxmax
Документы для функции idxmin : "Возвращает метку строки минимального значения. Если несколько значений равны минимальному, возвращается метка первой строки с этим значением."
Итак, если вы df.loc[((df['A'] == True) & (df['B'] == 'Tuesday')).idxmix()], это вернет строку, которая имеет минимальное значение для столбца C.
df.loc[((df['A'] == True) & (df['B'] == 'Tuesday')).idxmix()]