根据最后一行值删除数据框列

时间:2018-07-10 16:08:00

标签: python pandas dataframe

我有一个数据框架,如下所示。如何选择性地删除每行(10-jul-18)的最终值为<0.3的列?

是否返回删除了A列和D列的数据框?

从此:

enter image description here

给出:

enter image description here

1 个答案:

答案 0 :(得分:1)

假设您的DataFrame称为df,则可以通过以下方式进行操作:

columns_to_keep = df.iloc[-1, :]>=0.3
new_df = df.loc[:, columns_to_keep]

在这种情况下,df.iloc[-1, :]将最后一行作为pd.Series>=0.3将创建一个布尔系列,然后我们可以将其与.loc一起使用,以仅保留最后一行的值大于或等于0.3的列。

我在下面准备了minimal, complete and verifiable example

In [7]: import pandas as pd
In [8]: df = pd.DataFrame({'A':[0.1, 0.1, 0.2], 'B':[0.2, 0.3, 0.3], 'C':[0.2, 0.4, 0.4], 'D':[0.2, 0.2, 0.2], 'E':[0.1, 0.2, 0.4], 'F':[0.3
   ...: , 0.3, 0.4]}, index=['08-Jul-18', '09-Jul-18', '10-Jul-18'])

In [9]: df
Out[9]: 
             A    B    C    D    E    F
08-Jul-18  0.1  0.2  0.2  0.2  0.1  0.3
09-Jul-18  0.1  0.3  0.4  0.2  0.2  0.3
10-Jul-18  0.2  0.3  0.4  0.2  0.4  0.4

In [10]: df.loc[:, df.iloc[-1, :] >=.3]
Out[10]: 
             B    C    E    F
08-Jul-18  0.2  0.2  0.1  0.3
09-Jul-18  0.3  0.4  0.2  0.3
10-Jul-18  0.3  0.4  0.4  0.4