Фильтрация нескольких столбцов по значениям строк в панде - PullRequest
1 голос
/ 15 марта 2019

у меня есть структура данных панд, структурированная следующим образом:

In[1]:  df = pd.DataFrame({"A":[10, 15, 13, 18, 0.6],
                           "B":[20, 12, 16, 24, 0.5],
                           "C":[23, 22, 26, 24, 0.4],
                           "D":[9, 12, 17, 24, 0.8 ]})

Out[1]: df 
        A       B       C       D
    0   10.0    20.0    23.0    9.0
    1   15.0    12.0    22.0    12.0
    2   13.0    16.0    26.0    17.0
    3   18.0    24.0    24.0    24.0
    4   0.6     0.5     0.4     0.8

Отсюда моя цель - отфильтровать несколько столбцов на основе значений последней строки (индекс 4). Более подробно мне нужно сохранить те столбцы, которые имеют значение <0,06 в последней строке. Вывод должен быть в формате df следующим образом: </p>

     B       C       
0   20.0    23.0
1   12.0    22.0    
2   16.0    26.0    
3   24.0    24.0    
4   0.5     0.4     

Я пытаюсь это:

In[2]: df[(df[["A", "B", "C", "D"]] < 0.6)]

но я получаю следующее:

Out[2]:    
       A   B    C   D
   0  NaN  NaN  NaN NaN
   1  NaN  NaN  NaN NaN
   2  NaN  NaN  NaN NaN
   3  NaN  NaN  NaN NaN
   4  NaN   0.5 0.4 NaN

Я даже пытаюсь:

df[(df[["A", "B", "C", "D"]] < 0.6).all(axis=0)]

но это дает мне ошибку, не работает.

Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 15 марта 2019

Используйте DataFrame.loc с : для возврата всех строк по условию - сравните последнюю строку по DataFrame.iloc:

df1 = df.loc[:, df.iloc[-1] < 0.6]
print (df1)
      B     C
0  20.0  23.0
1  12.0  22.0
2  16.0  26.0
3  24.0  24.0
4   0.5   0.4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...