如何删除熊猫中所有行的值

时间:2021-02-23 21:38:46

标签: pandas dataframe

我有这样的代码:

    protein   IHD         CM          ARR         VD          CHD         CCD         VOO      
0   q9uku9    0.000000    0.039457    0.032901    0.014793    0.006614    0.006591    0.000000    
1   o75461    0.000000    0.005832    0.027698    0.000000    0.000000    0.006634    0.000000

有成千上万行蛋白质。但是,我想删除熊猫中的行,其中所有 疾病的行中的所有值都小于 0.01。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以将 locany 结合使用。基本上,您希望保留任何值大于或等于 0.01 的所有行。请注意,我调整了您的示例,使第二个蛋白质的所有值都 < 0.01。

import pandas as pd

df = pd.DataFrame([
    ['q9uku9', 0.000000, 0.039457, 0.032901, 0.014793, 0.006614, 0.006591, 0.000000 ],
    ['o75461', 0.000000, 0.005832, 0.007698, 0.000000, 0.000000, 0.006634, 0.000000]
], columns=['protein', 'IHD', 'CM', 'ARR', 'VD', 'CHD', 'CCD', 'VOO'])

df = df.set_index('protein')

df_filtered = df.loc[(df >= 0.01).any(axis=1)]

给出:

         IHD        CM       ARR        VD       CHD       CCD  VOO
protein                                                            
q9uku9   0.0  0.039457  0.032901  0.014793  0.006614  0.006591  0.0

答案 1 :(得分:0)

>>> df
  protein  IHD        CM       ARR        VD       CHD       CCD  VOO
0  q9uku9  0.0  0.039457  0.032901  0.014793  0.006614  0.006591  0.0
1  o75461  0.0  0.005832  0.027698  0.000000  0.000000  0.006634  0.0
2  d4acr8  0.0  0.001490  0.003920  0.000000  0.000000  0.009393  0.0

>>> df.loc[~(df.select_dtypes(float) < 0.01).all(axis="columns")]
  protein  IHD        CM       ARR        VD       CHD       CCD  VOO
0  q9uku9  0.0  0.039457  0.032901  0.014793  0.006614  0.006591  0.0
1  o75461  0.0  0.005832  0.027698  0.000000  0.000000  0.006634  0.0