Removing unwanted characters and editing Column names in pandas












2















I have pandas df with certain column names. The column names are as below,




u'Kanta/City', u'Aluepaso/Regional Level', u'Akue/District', u'Seotukartakudi/Map code', u'k�/Age', u'2015', u'2016', u'2017', u'2018'.




What I would like to do is, rename the columns in one line of code as below,




'City', 'Regional_Level', 'District', 'Map_Code', 'Age', '2015', '2016', '2017', '2018'.




Is there any efficient way of doing so (with lambda function)?










share|improve this question

























  • @ Kripalu Sar what you should do when someone answers your question must learn!

    – pygo
    Nov 23 '18 at 19:22
















2















I have pandas df with certain column names. The column names are as below,




u'Kanta/City', u'Aluepaso/Regional Level', u'Akue/District', u'Seotukartakudi/Map code', u'k�/Age', u'2015', u'2016', u'2017', u'2018'.




What I would like to do is, rename the columns in one line of code as below,




'City', 'Regional_Level', 'District', 'Map_Code', 'Age', '2015', '2016', '2017', '2018'.




Is there any efficient way of doing so (with lambda function)?










share|improve this question

























  • @ Kripalu Sar what you should do when someone answers your question must learn!

    – pygo
    Nov 23 '18 at 19:22














2












2








2








I have pandas df with certain column names. The column names are as below,




u'Kanta/City', u'Aluepaso/Regional Level', u'Akue/District', u'Seotukartakudi/Map code', u'k�/Age', u'2015', u'2016', u'2017', u'2018'.




What I would like to do is, rename the columns in one line of code as below,




'City', 'Regional_Level', 'District', 'Map_Code', 'Age', '2015', '2016', '2017', '2018'.




Is there any efficient way of doing so (with lambda function)?










share|improve this question
















I have pandas df with certain column names. The column names are as below,




u'Kanta/City', u'Aluepaso/Regional Level', u'Akue/District', u'Seotukartakudi/Map code', u'k�/Age', u'2015', u'2016', u'2017', u'2018'.




What I would like to do is, rename the columns in one line of code as below,




'City', 'Regional_Level', 'District', 'Map_Code', 'Age', '2015', '2016', '2017', '2018'.




Is there any efficient way of doing so (with lambda function)?







python pandas lambda multiple-columns rename






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 '18 at 11:05









Mohit Motwani

1,2571422




1,2571422










asked Nov 22 '18 at 10:31









Kripalu SarKripalu Sar

327




327













  • @ Kripalu Sar what you should do when someone answers your question must learn!

    – pygo
    Nov 23 '18 at 19:22



















  • @ Kripalu Sar what you should do when someone answers your question must learn!

    – pygo
    Nov 23 '18 at 19:22

















@ Kripalu Sar what you should do when someone answers your question must learn!

– pygo
Nov 23 '18 at 19:22





@ Kripalu Sar what you should do when someone answers your question must learn!

– pygo
Nov 23 '18 at 19:22












2 Answers
2






active

oldest

votes


















2














Using lambda:



df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

df.columns
> Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
'2017', '2018'],
dtype='object')





share|improve this answer































    0














    Simplest will be with using replace using regex.



    >>> df
    Empty DataFrame
    Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
    Index:

    >>> df.columns.str.replace('.*[\/]', '')
    Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
    '2017', '2018'],
    dtype='object')


    Regex explanation:




    .* matches any character (except for line terminators)



    * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)



    Match a single character present in the list below [\/]



    \ matches the character literally (case sensitive)



    / matches the character / literally (case sensitive)







    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%2f53428915%2fremoving-unwanted-characters-and-editing-column-names-in-pandas%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









      2














      Using lambda:



      df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

      df.columns
      > Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
      '2017', '2018'],
      dtype='object')





      share|improve this answer




























        2














        Using lambda:



        df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

        df.columns
        > Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
        '2017', '2018'],
        dtype='object')





        share|improve this answer


























          2












          2








          2







          Using lambda:



          df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

          df.columns
          > Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
          '2017', '2018'],
          dtype='object')





          share|improve this answer













          Using lambda:



          df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

          df.columns
          > Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
          '2017', '2018'],
          dtype='object')






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 22 '18 at 10:35









          Mohit MotwaniMohit Motwani

          1,2571422




          1,2571422

























              0














              Simplest will be with using replace using regex.



              >>> df
              Empty DataFrame
              Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
              Index:

              >>> df.columns.str.replace('.*[\/]', '')
              Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
              '2017', '2018'],
              dtype='object')


              Regex explanation:




              .* matches any character (except for line terminators)



              * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)



              Match a single character present in the list below [\/]



              \ matches the character literally (case sensitive)



              / matches the character / literally (case sensitive)







              share|improve this answer






























                0














                Simplest will be with using replace using regex.



                >>> df
                Empty DataFrame
                Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
                Index:

                >>> df.columns.str.replace('.*[\/]', '')
                Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
                '2017', '2018'],
                dtype='object')


                Regex explanation:




                .* matches any character (except for line terminators)



                * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)



                Match a single character present in the list below [\/]



                \ matches the character literally (case sensitive)



                / matches the character / literally (case sensitive)







                share|improve this answer




























                  0












                  0








                  0







                  Simplest will be with using replace using regex.



                  >>> df
                  Empty DataFrame
                  Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
                  Index:

                  >>> df.columns.str.replace('.*[\/]', '')
                  Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
                  '2017', '2018'],
                  dtype='object')


                  Regex explanation:




                  .* matches any character (except for line terminators)



                  * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)



                  Match a single character present in the list below [\/]



                  \ matches the character literally (case sensitive)



                  / matches the character / literally (case sensitive)







                  share|improve this answer















                  Simplest will be with using replace using regex.



                  >>> df
                  Empty DataFrame
                  Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
                  Index:

                  >>> df.columns.str.replace('.*[\/]', '')
                  Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
                  '2017', '2018'],
                  dtype='object')


                  Regex explanation:




                  .* matches any character (except for line terminators)



                  * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)



                  Match a single character present in the list below [\/]



                  \ matches the character literally (case sensitive)



                  / matches the character / literally (case sensitive)








                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 22 '18 at 11:32

























                  answered Nov 22 '18 at 11:27









                  pygopygo

                  2,5131619




                  2,5131619






























                      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%2f53428915%2fremoving-unwanted-characters-and-editing-column-names-in-pandas%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

                      404 Error Contact Form 7 ajax form submitting

                      How to know if a Active Directory user can login interactively

                      TypeError: fit_transform() missing 1 required positional argument: 'X'