Python Pandas: Index is overlapped? How to fix












2















I have created a dataframe after importing weather data, now called "weather".



The end goal is to be able to view data for specific month and year.



It started like this:enter image description here



Then I ran weather = weather.T to transform the graph making it look like:
enter image description here



Then I ran weather.columns=weather.iloc[0] to make the graph look like:
enter image description here



But the "year" column and "month" column are located in the index (i think?). How would i get it so it looks like:
enter image description here



Thanks for looking! Will appreciate any help :)



Please note I will remove the first row with the years in it. So don't worry about this part










share|improve this question





























    2















    I have created a dataframe after importing weather data, now called "weather".



    The end goal is to be able to view data for specific month and year.



    It started like this:enter image description here



    Then I ran weather = weather.T to transform the graph making it look like:
    enter image description here



    Then I ran weather.columns=weather.iloc[0] to make the graph look like:
    enter image description here



    But the "year" column and "month" column are located in the index (i think?). How would i get it so it looks like:
    enter image description here



    Thanks for looking! Will appreciate any help :)



    Please note I will remove the first row with the years in it. So don't worry about this part










    share|improve this question



























      2












      2








      2








      I have created a dataframe after importing weather data, now called "weather".



      The end goal is to be able to view data for specific month and year.



      It started like this:enter image description here



      Then I ran weather = weather.T to transform the graph making it look like:
      enter image description here



      Then I ran weather.columns=weather.iloc[0] to make the graph look like:
      enter image description here



      But the "year" column and "month" column are located in the index (i think?). How would i get it so it looks like:
      enter image description here



      Thanks for looking! Will appreciate any help :)



      Please note I will remove the first row with the years in it. So don't worry about this part










      share|improve this question
















      I have created a dataframe after importing weather data, now called "weather".



      The end goal is to be able to view data for specific month and year.



      It started like this:enter image description here



      Then I ran weather = weather.T to transform the graph making it look like:
      enter image description here



      Then I ran weather.columns=weather.iloc[0] to make the graph look like:
      enter image description here



      But the "year" column and "month" column are located in the index (i think?). How would i get it so it looks like:
      enter image description here



      Thanks for looking! Will appreciate any help :)



      Please note I will remove the first row with the years in it. So don't worry about this part







      python pandas dataframe indexing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 '18 at 0:03









      jpp

      102k2165116




      102k2165116










      asked Nov 21 '18 at 23:40









      A JohnstonA Johnston

      315




      315
























          1 Answer
          1






          active

          oldest

          votes


















          0














          This just means the pd.Index object underlying your pd.DataFrame object, unbeknownst to you, has a name:



          df = pd.DataFrame({'YEAR': [2016, 2017, 2018],
          'JAN': [1, 2, 3],
          'FEB': [4, 5, 6],
          'MAR': [7, 8, 9]})

          df.columns.name = 'month'
          df = df.T
          df.columns = df.iloc[0]

          print(df)

          YEAR 2016 2017 2018
          month
          YEAR 2016 2017 2018
          JAN 1 2 3
          FEB 4 5 6
          MAR 7 8 9


          If this really bothers you, you can use reset_index to elevate your index to a series and then drop the extra heading row. You can, at the same time, remove the column name:



          df = df.reset_index().drop(0)
          df.columns.name = ''

          print(df)

          month 2016 2017 2018
          1 JAN 1 2 3
          2 FEB 4 5 6
          3 MAR 7 8 9





          share|improve this answer
























          • @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

            – jpp
            Nov 21 '18 at 23:57











          • edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

            – A Johnston
            Nov 21 '18 at 23:58











          • df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

            – jpp
            Nov 21 '18 at 23:59













          • Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

            – A Johnston
            Nov 22 '18 at 0:08













          • Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

            – jpp
            Nov 22 '18 at 0:09












          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%2f53421977%2fpython-pandas-index-is-overlapped-how-to-fix%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          This just means the pd.Index object underlying your pd.DataFrame object, unbeknownst to you, has a name:



          df = pd.DataFrame({'YEAR': [2016, 2017, 2018],
          'JAN': [1, 2, 3],
          'FEB': [4, 5, 6],
          'MAR': [7, 8, 9]})

          df.columns.name = 'month'
          df = df.T
          df.columns = df.iloc[0]

          print(df)

          YEAR 2016 2017 2018
          month
          YEAR 2016 2017 2018
          JAN 1 2 3
          FEB 4 5 6
          MAR 7 8 9


          If this really bothers you, you can use reset_index to elevate your index to a series and then drop the extra heading row. You can, at the same time, remove the column name:



          df = df.reset_index().drop(0)
          df.columns.name = ''

          print(df)

          month 2016 2017 2018
          1 JAN 1 2 3
          2 FEB 4 5 6
          3 MAR 7 8 9





          share|improve this answer
























          • @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

            – jpp
            Nov 21 '18 at 23:57











          • edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

            – A Johnston
            Nov 21 '18 at 23:58











          • df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

            – jpp
            Nov 21 '18 at 23:59













          • Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

            – A Johnston
            Nov 22 '18 at 0:08













          • Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

            – jpp
            Nov 22 '18 at 0:09
















          0














          This just means the pd.Index object underlying your pd.DataFrame object, unbeknownst to you, has a name:



          df = pd.DataFrame({'YEAR': [2016, 2017, 2018],
          'JAN': [1, 2, 3],
          'FEB': [4, 5, 6],
          'MAR': [7, 8, 9]})

          df.columns.name = 'month'
          df = df.T
          df.columns = df.iloc[0]

          print(df)

          YEAR 2016 2017 2018
          month
          YEAR 2016 2017 2018
          JAN 1 2 3
          FEB 4 5 6
          MAR 7 8 9


          If this really bothers you, you can use reset_index to elevate your index to a series and then drop the extra heading row. You can, at the same time, remove the column name:



          df = df.reset_index().drop(0)
          df.columns.name = ''

          print(df)

          month 2016 2017 2018
          1 JAN 1 2 3
          2 FEB 4 5 6
          3 MAR 7 8 9





          share|improve this answer
























          • @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

            – jpp
            Nov 21 '18 at 23:57











          • edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

            – A Johnston
            Nov 21 '18 at 23:58











          • df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

            – jpp
            Nov 21 '18 at 23:59













          • Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

            – A Johnston
            Nov 22 '18 at 0:08













          • Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

            – jpp
            Nov 22 '18 at 0:09














          0












          0








          0







          This just means the pd.Index object underlying your pd.DataFrame object, unbeknownst to you, has a name:



          df = pd.DataFrame({'YEAR': [2016, 2017, 2018],
          'JAN': [1, 2, 3],
          'FEB': [4, 5, 6],
          'MAR': [7, 8, 9]})

          df.columns.name = 'month'
          df = df.T
          df.columns = df.iloc[0]

          print(df)

          YEAR 2016 2017 2018
          month
          YEAR 2016 2017 2018
          JAN 1 2 3
          FEB 4 5 6
          MAR 7 8 9


          If this really bothers you, you can use reset_index to elevate your index to a series and then drop the extra heading row. You can, at the same time, remove the column name:



          df = df.reset_index().drop(0)
          df.columns.name = ''

          print(df)

          month 2016 2017 2018
          1 JAN 1 2 3
          2 FEB 4 5 6
          3 MAR 7 8 9





          share|improve this answer













          This just means the pd.Index object underlying your pd.DataFrame object, unbeknownst to you, has a name:



          df = pd.DataFrame({'YEAR': [2016, 2017, 2018],
          'JAN': [1, 2, 3],
          'FEB': [4, 5, 6],
          'MAR': [7, 8, 9]})

          df.columns.name = 'month'
          df = df.T
          df.columns = df.iloc[0]

          print(df)

          YEAR 2016 2017 2018
          month
          YEAR 2016 2017 2018
          JAN 1 2 3
          FEB 4 5 6
          MAR 7 8 9


          If this really bothers you, you can use reset_index to elevate your index to a series and then drop the extra heading row. You can, at the same time, remove the column name:



          df = df.reset_index().drop(0)
          df.columns.name = ''

          print(df)

          month 2016 2017 2018
          1 JAN 1 2 3
          2 FEB 4 5 6
          3 MAR 7 8 9






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 21 '18 at 23:47









          jppjpp

          102k2165116




          102k2165116













          • @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

            – jpp
            Nov 21 '18 at 23:57











          • edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

            – A Johnston
            Nov 21 '18 at 23:58











          • df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

            – jpp
            Nov 21 '18 at 23:59













          • Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

            – A Johnston
            Nov 22 '18 at 0:08













          • Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

            – jpp
            Nov 22 '18 at 0:09



















          • @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

            – jpp
            Nov 21 '18 at 23:57











          • edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

            – A Johnston
            Nov 21 '18 at 23:58











          • df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

            – jpp
            Nov 21 '18 at 23:59













          • Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

            – A Johnston
            Nov 22 '18 at 0:08













          • Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

            – jpp
            Nov 22 '18 at 0:09

















          @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

          – jpp
          Nov 21 '18 at 23:57





          @AJohnston, No problem, if this helped feel free to accept (tick on left) so other users know.

          – jpp
          Nov 21 '18 at 23:57













          edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

          – A Johnston
          Nov 21 '18 at 23:58





          edit Thanks! That's how I planned on it looking :) To ask a follow up question.. how would you select the "5" value under "FEB" and "2017"? Thanks

          – A Johnston
          Nov 21 '18 at 23:58













          df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

          – jpp
          Nov 21 '18 at 23:59







          df.loc[df['month'] == 'FEB', 2017].iat[0] might be sufficient, or df[2017].iat[1].

          – jpp
          Nov 21 '18 at 23:59















          Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

          – A Johnston
          Nov 22 '18 at 0:08







          Thanks again! Another follow up if you don't mind How would I store that? Feb = weather.loc[weather['month'] == 'FEB', 2017].iat[0] Doesn't seem to work, any suggestions? Thanks

          – A Johnston
          Nov 22 '18 at 0:08















          Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

          – jpp
          Nov 22 '18 at 0:09





          Sorry, not sure, what you're trying should work but if you're unable to figure it out after a while free free to post a new question.

          – jpp
          Nov 22 '18 at 0:09




















          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%2f53421977%2fpython-pandas-index-is-overlapped-how-to-fix%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

          Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

          ComboBox Display Member on multiple fields

          Is it possible to collect Nectar points via Trainline?