Как я могу удалить столбцы pandas dataframe, зависящие от значений последней строки? - PullRequest
2 голосов
/ 08 ноября 2019

Учитывая кадр данных, например:

             A  B  C
2019-11-02  120 25 11
2019-11-03  119 28 15
2019-11-04  115 23 18
2019-11-05  119 30 20
2019-11-06  121 32 25
2019-11-07  117 24 30

Я хотел бы удалить столбцы, в которых значение последней строки меньше (<) постоянной X, скажем, X = 25. ВВ этом примере будет удален только столбец B, а результат будет: </p>

             A  C
2019-11-02  120 11
2019-11-03  119 15
2019-11-04  115 18
2019-11-05  119 20
2019-11-06  121 25
2019-11-07  117 30

Спасибо

1 Ответ

1 голос
/ 08 ноября 2019

Метод 1:

Использование iloc, lt и drop:

Мы выбираем последнюю строку с помощью iloc[-1], затем проверяем, какой столбец равен less than (lt)25 и передайте этот столбец DataFrame.drop

df = df.drop(columns = df.columns[df.iloc[-1].lt(25)])

Метод 2:

Использование tail, iloc, gt и all:

df = df.loc[:, df.tail(1).gt(25).all()]
              A   C
2019-11-02  120  11
2019-11-03  119  15
2019-11-04  115  18
2019-11-05  119  20
2019-11-06  121  25
2019-11-07  117  30

Пошаговый метод 1 :

# select last row

df.iloc[-1]

A    117
B     24
C     30
Name: 2019-11-07, dtype: int64
# check which columns have value < 25:

df.iloc[-1].lt(25)

A    False
B     True
C    False
Name: 2019-11-07, dtype: bool
# select those column(s) with boolean indexing:

df.columns[df.iloc[-1].lt(25)]

Index(['B'], dtype='object')
# finally pass it DataFrame.drop

df.drop(columns = df.columns[df.iloc[-1].lt(25)])

              A   C
2019-11-02  120  11
2019-11-03  119  15
2019-11-04  115  18
2019-11-05  119  20
2019-11-06  121  25
2019-11-07  117  30
...