Columns greater than a threshold












1















How can I retrieve the columns in which at least once appears a value < threshold?



For instance:



THRESHOLD = 0

print(df)

Col_1 Col_2 Col_3 Col_4
1 3 5 -9
1 3 5 -9
1 -2 5 -9


print(final_df)



  Col_2    Col_4
3 -9
3 -9
-2 -9


I tried with:



df[(df < 0).any(1)]  


But it reports the rows, not the columns, in which at least one element < 0 appears.










share|improve this question

























  • you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

    – gyx-hh
    Nov 23 '18 at 15:21
















1















How can I retrieve the columns in which at least once appears a value < threshold?



For instance:



THRESHOLD = 0

print(df)

Col_1 Col_2 Col_3 Col_4
1 3 5 -9
1 3 5 -9
1 -2 5 -9


print(final_df)



  Col_2    Col_4
3 -9
3 -9
-2 -9


I tried with:



df[(df < 0).any(1)]  


But it reports the rows, not the columns, in which at least one element < 0 appears.










share|improve this question

























  • you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

    – gyx-hh
    Nov 23 '18 at 15:21














1












1








1








How can I retrieve the columns in which at least once appears a value < threshold?



For instance:



THRESHOLD = 0

print(df)

Col_1 Col_2 Col_3 Col_4
1 3 5 -9
1 3 5 -9
1 -2 5 -9


print(final_df)



  Col_2    Col_4
3 -9
3 -9
-2 -9


I tried with:



df[(df < 0).any(1)]  


But it reports the rows, not the columns, in which at least one element < 0 appears.










share|improve this question
















How can I retrieve the columns in which at least once appears a value < threshold?



For instance:



THRESHOLD = 0

print(df)

Col_1 Col_2 Col_3 Col_4
1 3 5 -9
1 3 5 -9
1 -2 5 -9


print(final_df)



  Col_2    Col_4
3 -9
3 -9
-2 -9


I tried with:



df[(df < 0).any(1)]  


But it reports the rows, not the columns, in which at least one element < 0 appears.







python pandas threshold






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 15:20









D Manokhin

599219




599219










asked Nov 23 '18 at 15:16









Alessandro CeccarelliAlessandro Ceccarelli

259211




259211













  • you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

    – gyx-hh
    Nov 23 '18 at 15:21



















  • you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

    – gyx-hh
    Nov 23 '18 at 15:21

















you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

– gyx-hh
Nov 23 '18 at 15:21





you can transpose but it's probably not the best solution. df.T[(df.T < 0).any(1)].T

– gyx-hh
Nov 23 '18 at 15:21












2 Answers
2






active

oldest

votes


















1














You can issue df.loc[:, (df < 0).any(0)].



>>> df                                                                                                                       
Col_1 Col_2 Col_3 Col_4
0 1 3 5 -9
1 1 3 5 -9
2 1 -2 5 -9
>>>
>>> df.loc[:, (df < 0).any(0)]
Col_2 Col_4
0 3 -9
1 3 -9
2 -2 -9


Details:



(df < 0).any(0) will give you the columns that have a value lower than zero, because any(0) operates along the rows.



>>> df < 0                                                                                                                    
Col_1 Col_2 Col_3 Col_4
0 False False False True
1 False False False True
2 False True False True
>>>
>>> (df < 0).any(0)
Col_1 False
Col_2 True
Col_3 False
Col_4 True
dtype: bool


Then df.loc[:, (df < 0).any(0)] selects all rows and the columns for which df < 0).any(0) is True by boolean indexing.






share|improve this answer































    1














    Using axis=0 with .loc



    df.loc[:,(df < 0).any(0)]
    Out[215]:
    Col_2 Col_4
    0 3 -9
    1 3 -9
    2 -2 -9


    Or we using .iloc with nonzero



    df.iloc[:,(df<0).any().nonzero()[0]]
    Out[230]:
    Col_2 Col_4
    0 3 -9
    1 3 -9
    2 -2 -9





    share|improve this answer

























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53449154%2fcolumns-greater-than-a-threshold%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      You can issue df.loc[:, (df < 0).any(0)].



      >>> df                                                                                                                       
      Col_1 Col_2 Col_3 Col_4
      0 1 3 5 -9
      1 1 3 5 -9
      2 1 -2 5 -9
      >>>
      >>> df.loc[:, (df < 0).any(0)]
      Col_2 Col_4
      0 3 -9
      1 3 -9
      2 -2 -9


      Details:



      (df < 0).any(0) will give you the columns that have a value lower than zero, because any(0) operates along the rows.



      >>> df < 0                                                                                                                    
      Col_1 Col_2 Col_3 Col_4
      0 False False False True
      1 False False False True
      2 False True False True
      >>>
      >>> (df < 0).any(0)
      Col_1 False
      Col_2 True
      Col_3 False
      Col_4 True
      dtype: bool


      Then df.loc[:, (df < 0).any(0)] selects all rows and the columns for which df < 0).any(0) is True by boolean indexing.






      share|improve this answer




























        1














        You can issue df.loc[:, (df < 0).any(0)].



        >>> df                                                                                                                       
        Col_1 Col_2 Col_3 Col_4
        0 1 3 5 -9
        1 1 3 5 -9
        2 1 -2 5 -9
        >>>
        >>> df.loc[:, (df < 0).any(0)]
        Col_2 Col_4
        0 3 -9
        1 3 -9
        2 -2 -9


        Details:



        (df < 0).any(0) will give you the columns that have a value lower than zero, because any(0) operates along the rows.



        >>> df < 0                                                                                                                    
        Col_1 Col_2 Col_3 Col_4
        0 False False False True
        1 False False False True
        2 False True False True
        >>>
        >>> (df < 0).any(0)
        Col_1 False
        Col_2 True
        Col_3 False
        Col_4 True
        dtype: bool


        Then df.loc[:, (df < 0).any(0)] selects all rows and the columns for which df < 0).any(0) is True by boolean indexing.






        share|improve this answer


























          1












          1








          1







          You can issue df.loc[:, (df < 0).any(0)].



          >>> df                                                                                                                       
          Col_1 Col_2 Col_3 Col_4
          0 1 3 5 -9
          1 1 3 5 -9
          2 1 -2 5 -9
          >>>
          >>> df.loc[:, (df < 0).any(0)]
          Col_2 Col_4
          0 3 -9
          1 3 -9
          2 -2 -9


          Details:



          (df < 0).any(0) will give you the columns that have a value lower than zero, because any(0) operates along the rows.



          >>> df < 0                                                                                                                    
          Col_1 Col_2 Col_3 Col_4
          0 False False False True
          1 False False False True
          2 False True False True
          >>>
          >>> (df < 0).any(0)
          Col_1 False
          Col_2 True
          Col_3 False
          Col_4 True
          dtype: bool


          Then df.loc[:, (df < 0).any(0)] selects all rows and the columns for which df < 0).any(0) is True by boolean indexing.






          share|improve this answer













          You can issue df.loc[:, (df < 0).any(0)].



          >>> df                                                                                                                       
          Col_1 Col_2 Col_3 Col_4
          0 1 3 5 -9
          1 1 3 5 -9
          2 1 -2 5 -9
          >>>
          >>> df.loc[:, (df < 0).any(0)]
          Col_2 Col_4
          0 3 -9
          1 3 -9
          2 -2 -9


          Details:



          (df < 0).any(0) will give you the columns that have a value lower than zero, because any(0) operates along the rows.



          >>> df < 0                                                                                                                    
          Col_1 Col_2 Col_3 Col_4
          0 False False False True
          1 False False False True
          2 False True False True
          >>>
          >>> (df < 0).any(0)
          Col_1 False
          Col_2 True
          Col_3 False
          Col_4 True
          dtype: bool


          Then df.loc[:, (df < 0).any(0)] selects all rows and the columns for which df < 0).any(0) is True by boolean indexing.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 15:22









          timgebtimgeb

          50.8k116493




          50.8k116493

























              1














              Using axis=0 with .loc



              df.loc[:,(df < 0).any(0)]
              Out[215]:
              Col_2 Col_4
              0 3 -9
              1 3 -9
              2 -2 -9


              Or we using .iloc with nonzero



              df.iloc[:,(df<0).any().nonzero()[0]]
              Out[230]:
              Col_2 Col_4
              0 3 -9
              1 3 -9
              2 -2 -9





              share|improve this answer






























                1














                Using axis=0 with .loc



                df.loc[:,(df < 0).any(0)]
                Out[215]:
                Col_2 Col_4
                0 3 -9
                1 3 -9
                2 -2 -9


                Or we using .iloc with nonzero



                df.iloc[:,(df<0).any().nonzero()[0]]
                Out[230]:
                Col_2 Col_4
                0 3 -9
                1 3 -9
                2 -2 -9





                share|improve this answer




























                  1












                  1








                  1







                  Using axis=0 with .loc



                  df.loc[:,(df < 0).any(0)]
                  Out[215]:
                  Col_2 Col_4
                  0 3 -9
                  1 3 -9
                  2 -2 -9


                  Or we using .iloc with nonzero



                  df.iloc[:,(df<0).any().nonzero()[0]]
                  Out[230]:
                  Col_2 Col_4
                  0 3 -9
                  1 3 -9
                  2 -2 -9





                  share|improve this answer















                  Using axis=0 with .loc



                  df.loc[:,(df < 0).any(0)]
                  Out[215]:
                  Col_2 Col_4
                  0 3 -9
                  1 3 -9
                  2 -2 -9


                  Or we using .iloc with nonzero



                  df.iloc[:,(df<0).any().nonzero()[0]]
                  Out[230]:
                  Col_2 Col_4
                  0 3 -9
                  1 3 -9
                  2 -2 -9






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 23 '18 at 15:27

























                  answered Nov 23 '18 at 15:22









                  Wen-BenWen-Ben

                  110k83266




                  110k83266






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53449154%2fcolumns-greater-than-a-threshold%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Wiesbaden

                      Marschland

                      Dieringhausen