给出如下数据框:
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
谢谢
答案 0 :(得分:1)
使用iloc
,lt
和drop
:
我们用iloc[-1]
选择最后一行,然后检查哪一列是less than (lt)
25
并将该列传递给DataFrame.drop
df = df.drop(columns = df.columns[df.iloc[-1].lt(25)])
使用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