如何删除以最后一行值为条件的熊猫数据框列?

时间:2019-11-07 23:01:42

标签: python pandas dataframe subset

给出如下数据框:

             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 个答案:

答案 0 :(得分:1)

方法1:

使用ilocltdrop

我们用iloc[-1]选择最后一行,然后检查哪一列是less than (lt) 25并将该列传递给DataFrame.drop

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

方法2:

使用taililocgtall

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
相关问题