How to reset index in a pandas data frame?












215














I have a data frame from which I remove some rows. As a result, I get a data frame in which index is something like that: [1,5,6,10,11] and I would like to reset it to [0,1,2,3,4]. How can I do it?





The following seems to work:



df = df.reset_index()
del df['index']


The following does not work:



df = df.reindex()









share|improve this question





























    215














    I have a data frame from which I remove some rows. As a result, I get a data frame in which index is something like that: [1,5,6,10,11] and I would like to reset it to [0,1,2,3,4]. How can I do it?





    The following seems to work:



    df = df.reset_index()
    del df['index']


    The following does not work:



    df = df.reindex()









    share|improve this question



























      215












      215








      215


      61





      I have a data frame from which I remove some rows. As a result, I get a data frame in which index is something like that: [1,5,6,10,11] and I would like to reset it to [0,1,2,3,4]. How can I do it?





      The following seems to work:



      df = df.reset_index()
      del df['index']


      The following does not work:



      df = df.reindex()









      share|improve this question















      I have a data frame from which I remove some rows. As a result, I get a data frame in which index is something like that: [1,5,6,10,11] and I would like to reset it to [0,1,2,3,4]. How can I do it?





      The following seems to work:



      df = df.reset_index()
      del df['index']


      The following does not work:



      df = df.reindex()






      python indexing pandas dataframe






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 at 18:52









      Zoe

      11k73675




      11k73675










      asked Dec 10 '13 at 9:12









      Roman

      26.9k124274366




      26.9k124274366
























          3 Answers
          3






          active

          oldest

          votes


















          444














          reset_index() is what you're looking for. If you don't want it saved as a column, then do:



          df = df.reset_index(drop=True)





          share|improve this answer



















          • 73




            Instead of reassign the dataframe to the same variable you can set inplace=True argument.
            – alhuelamo
            Feb 24 '16 at 13:03








          • 10




            Note that in case of inplace=True the method returns None
            – alyaxey
            Oct 30 '17 at 10:41



















          23














          Another solutions are assign RangeIndex or range:



          df.index = pd.RangeIndex(len(df.index))

          df.index = range(len(df.index))


          It is faster:



          df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
          df = pd.concat([df]*10000)
          print (df.head())

          In [298]: %timeit df1 = df.reset_index(drop=True)
          The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
          10000 loops, best of 3: 105 µs per loop

          In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
          The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
          100000 loops, best of 3: 7.84 µs per loop

          In [300]: %timeit df.index = range(len(df.index))
          The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
          100000 loops, best of 3: 14.2 µs per loop





          share|improve this answer

















          • 2




            @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
            – jezrael
            Jan 3 at 5:15



















          1














          data1.reset_index(inplace=False)





          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%2f20490274%2fhow-to-reset-index-in-a-pandas-data-frame%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            3 Answers
            3






            active

            oldest

            votes








            3 Answers
            3






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            444














            reset_index() is what you're looking for. If you don't want it saved as a column, then do:



            df = df.reset_index(drop=True)





            share|improve this answer



















            • 73




              Instead of reassign the dataframe to the same variable you can set inplace=True argument.
              – alhuelamo
              Feb 24 '16 at 13:03








            • 10




              Note that in case of inplace=True the method returns None
              – alyaxey
              Oct 30 '17 at 10:41
















            444














            reset_index() is what you're looking for. If you don't want it saved as a column, then do:



            df = df.reset_index(drop=True)





            share|improve this answer



















            • 73




              Instead of reassign the dataframe to the same variable you can set inplace=True argument.
              – alhuelamo
              Feb 24 '16 at 13:03








            • 10




              Note that in case of inplace=True the method returns None
              – alyaxey
              Oct 30 '17 at 10:41














            444












            444








            444






            reset_index() is what you're looking for. If you don't want it saved as a column, then do:



            df = df.reset_index(drop=True)





            share|improve this answer














            reset_index() is what you're looking for. If you don't want it saved as a column, then do:



            df = df.reset_index(drop=True)






            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Sep 23 '17 at 15:11









            petezurich

            3,50581734




            3,50581734










            answered Dec 10 '13 at 10:19









            mkln

            5,97131218




            5,97131218








            • 73




              Instead of reassign the dataframe to the same variable you can set inplace=True argument.
              – alhuelamo
              Feb 24 '16 at 13:03








            • 10




              Note that in case of inplace=True the method returns None
              – alyaxey
              Oct 30 '17 at 10:41














            • 73




              Instead of reassign the dataframe to the same variable you can set inplace=True argument.
              – alhuelamo
              Feb 24 '16 at 13:03








            • 10




              Note that in case of inplace=True the method returns None
              – alyaxey
              Oct 30 '17 at 10:41








            73




            73




            Instead of reassign the dataframe to the same variable you can set inplace=True argument.
            – alhuelamo
            Feb 24 '16 at 13:03






            Instead of reassign the dataframe to the same variable you can set inplace=True argument.
            – alhuelamo
            Feb 24 '16 at 13:03






            10




            10




            Note that in case of inplace=True the method returns None
            – alyaxey
            Oct 30 '17 at 10:41




            Note that in case of inplace=True the method returns None
            – alyaxey
            Oct 30 '17 at 10:41













            23














            Another solutions are assign RangeIndex or range:



            df.index = pd.RangeIndex(len(df.index))

            df.index = range(len(df.index))


            It is faster:



            df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
            df = pd.concat([df]*10000)
            print (df.head())

            In [298]: %timeit df1 = df.reset_index(drop=True)
            The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
            10000 loops, best of 3: 105 µs per loop

            In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
            The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 7.84 µs per loop

            In [300]: %timeit df.index = range(len(df.index))
            The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 14.2 µs per loop





            share|improve this answer

















            • 2




              @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
              – jezrael
              Jan 3 at 5:15
















            23














            Another solutions are assign RangeIndex or range:



            df.index = pd.RangeIndex(len(df.index))

            df.index = range(len(df.index))


            It is faster:



            df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
            df = pd.concat([df]*10000)
            print (df.head())

            In [298]: %timeit df1 = df.reset_index(drop=True)
            The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
            10000 loops, best of 3: 105 µs per loop

            In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
            The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 7.84 µs per loop

            In [300]: %timeit df.index = range(len(df.index))
            The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 14.2 µs per loop





            share|improve this answer

















            • 2




              @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
              – jezrael
              Jan 3 at 5:15














            23












            23








            23






            Another solutions are assign RangeIndex or range:



            df.index = pd.RangeIndex(len(df.index))

            df.index = range(len(df.index))


            It is faster:



            df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
            df = pd.concat([df]*10000)
            print (df.head())

            In [298]: %timeit df1 = df.reset_index(drop=True)
            The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
            10000 loops, best of 3: 105 µs per loop

            In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
            The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 7.84 µs per loop

            In [300]: %timeit df.index = range(len(df.index))
            The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 14.2 µs per loop





            share|improve this answer












            Another solutions are assign RangeIndex or range:



            df.index = pd.RangeIndex(len(df.index))

            df.index = range(len(df.index))


            It is faster:



            df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
            df = pd.concat([df]*10000)
            print (df.head())

            In [298]: %timeit df1 = df.reset_index(drop=True)
            The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
            10000 loops, best of 3: 105 µs per loop

            In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
            The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 7.84 µs per loop

            In [300]: %timeit df.index = range(len(df.index))
            The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
            100000 loops, best of 3: 14.2 µs per loop






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Aug 15 '17 at 11:40









            jezrael

            319k22258337




            319k22258337








            • 2




              @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
              – jezrael
              Jan 3 at 5:15














            • 2




              @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
              – jezrael
              Jan 3 at 5:15








            2




            2




            @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
            – jezrael
            Jan 3 at 5:15




            @Outcast Source - The fastest is len(df.index), 381ns vs df.shape 1.17us. Oyr something missing?
            – jezrael
            Jan 3 at 5:15











            1














            data1.reset_index(inplace=False)





            share|improve this answer




























              1














              data1.reset_index(inplace=False)





              share|improve this answer


























                1












                1








                1






                data1.reset_index(inplace=False)





                share|improve this answer














                data1.reset_index(inplace=False)






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 22 at 18:52









                Zoe

                11k73675




                11k73675










                answered Nov 22 at 18:46









                user10692571

                211




                211






























                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f20490274%2fhow-to-reset-index-in-a-pandas-data-frame%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

                    What visual should I use to simply compare current year value vs last year in Power BI desktop

                    Alexandru Averescu

                    Trompette piccolo