根据pandas数据框中的行值过滤多列

时间:2019-03-15 11:12:43

标签: python-3.x pandas dataframe

我的熊猫数据框结构如下:

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:

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

答案 0 :(得分:3)

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