ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

译(四十三)-Python改变DataFrame列顺序

2022-01-16 20:58:00  阅读:220  来源: 互联网

标签:Python cols DataFrame df dataframe 四十三 Out columns mean


文章首发及后续更新:https://mwhls.top/3390.html
新的更新内容请到mwhls.top查看。
无图/无目录/格式错误/更多相关请到上方的文章首发页面查看。

stackoverflow热门问题目录

如有翻译问题欢迎评论指出,谢谢。

如何改变DataFrame列的顺序?

  • Timmie asked:

    • 对于下面的 DataFrame(df)

    • import numpy as np
      import pandas as pd
      #
      df = pd.DataFrame(np.random.rand(10, 5))
      
    • 我加了新的一列:

    • df['mean'] = df.mean(1)
      
    • 如何把 mean 列移动到开头?或者说如何以 mean 列作为第一列,其它列顺序不变往后移动?

  • Answers:

    • Aman - vote: 1144

      • 一个简单的方式是将列以列表的形式改变 dataframe 的排列,根据需要用不同的方式排列即可。

      • 例如对于下面的 dataframe:

      • In [6]: df
        Out[6]:
                  0         1         2         3         4      mean
        0  0.445598  0.173835  0.343415  0.682252  0.582616  0.445543
        1  0.881592  0.696942  0.702232  0.696724  0.373551  0.670208
        2  0.662527  0.955193  0.131016  0.609548  0.804694  0.632596
        3  0.260919  0.783467  0.593433  0.033426  0.512019  0.436653
        4  0.131842  0.799367  0.182828  0.683330  0.019485  0.363371
        5  0.498784  0.873495  0.383811  0.699289  0.480447  0.587165
        6  0.388771  0.395757  0.745237  0.628406  0.784473  0.588529
        7  0.147986  0.459451  0.310961  0.706435  0.100914  0.345149
        8  0.394947  0.863494  0.585030  0.565944  0.356561  0.553195
        9  0.689260  0.865243  0.136481  0.386582  0.730399  0.561593
        # 
        In [7]: cols = df.columns.tolist()
        # 
        In [8]: cols
        Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']
        
      • 用你希望的方式重新排列这些 cols。下面是我将最后一列元素移到第一列的方式:

      • In [12]: cols = cols[-1:] + cols[:-1]
        # 
        In [13]: cols
        Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]
        
      • 排序后的 dataframe 如下:

      • In [16]: df = df[cols]  #    OR    df = df.ix[:, cols]
        # 
        In [17]: df
        Out[17]:
               mean         0         1         2         3         4
        0  0.445543  0.445598  0.173835  0.343415  0.682252  0.582616
        1  0.670208  0.881592  0.696942  0.702232  0.696724  0.373551
        2  0.632596  0.662527  0.955193  0.131016  0.609548  0.804694
        3  0.436653  0.260919  0.783467  0.593433  0.033426  0.512019
        4  0.363371  0.131842  0.799367  0.182828  0.683330  0.019485
        5  0.587165  0.498784  0.873495  0.383811  0.699289  0.480447
        6  0.588529  0.388771  0.395757  0.745237  0.628406  0.784473
        7  0.345149  0.147986  0.459451  0.310961  0.706435  0.100914
        8  0.553195  0.394947  0.863494  0.585030  0.565944  0.356561
        9  0.561593  0.689260  0.865243  0.136481  0.386582  0.730399
        
    • freddygv - vote: 675

      • 这样可以:

      • df = df[['mean', '0', '1', '2', '3']]
        
      • 下面的代码用来得到列的列表:

      • cols = list(df.columns.values)
        
      • 输出:

      • ['0', '1', '2', '3', 'mean']
        
      • 这挺方便的。

    • fixxxer - vote: 367

      • 像这样按你需要的顺序来处理列名即可:

      • In [39]: df
        Out[39]: 
                  0         1         2         3         4  mean
        0  0.172742  0.915661  0.043387  0.712833  0.190717     1
        1  0.128186  0.424771  0.590779  0.771080  0.617472     1
        2  0.125709  0.085894  0.989798  0.829491  0.155563     1
        3  0.742578  0.104061  0.299708  0.616751  0.951802     1
        4  0.721118  0.528156  0.421360  0.105886  0.322311     1
        5  0.900878  0.082047  0.224656  0.195162  0.736652     1
        6  0.897832  0.558108  0.318016  0.586563  0.507564     1
        7  0.027178  0.375183  0.930248  0.921786  0.337060     1
        8  0.763028  0.182905  0.931756  0.110675  0.423398     1
        9  0.848996  0.310562  0.140873  0.304561  0.417808     1
        # 
        In [40]: df = df[['mean', 4,3,2,1]]
        
      • 处理后,‘mean’ 列会在开头:

      • In [41]: df
        Out[41]: 
           mean         4         3         2         1
        0     1  0.190717  0.712833  0.043387  0.915661
        1     1  0.617472  0.771080  0.590779  0.424771
        2     1  0.155563  0.829491  0.989798  0.085894
        3     1  0.951802  0.616751  0.299708  0.104061
        4     1  0.322311  0.105886  0.421360  0.528156
        5     1  0.736652  0.195162  0.224656  0.082047
        6     1  0.507564  0.586563  0.318016  0.558108
        7     1  0.337060  0.921786  0.930248  0.375183
        8     1  0.423398  0.110675  0.931756  0.182905
        9     1  0.417808  0.304561  0.140873  0.310562
        

How to change the order of DataFrame columns?

  • Timmie asked:

    • I have the following DataFrame (df):
      对于下面的 DataFrame(df)

    • import numpy as np
      import pandas as pd
      # 
      df = pd.DataFrame(np.random.rand(10, 5))
      
    • I add more column(s) by assignment:

      我加了新的一列:

    • df['mean'] = df.mean(1)
      
    • How can I move the column mean to the front, i.e. set it as first column leaving the order of the other columns untouched?
      如何把 mean 列移动到开头?或者说如何以 mean 列作为第一列,其它列顺序不变往后移动?

  • Answers:

    • Aman - vote: 1144

      • One easy way would be to reassign the dataframe with a list of the columns, rearranged as needed.
        一个简单的方式是将列以列表的形式改变 dataframe 的排列,根据需要用不同的方式排列即可。

      • This is what you have now:
        例如对于下面的 dataframe:

      • In [6]: df
        Out[6]:
                  0         1         2         3         4      mean
        0  0.445598  0.173835  0.343415  0.682252  0.582616  0.445543
        1  0.881592  0.696942  0.702232  0.696724  0.373551  0.670208
        2  0.662527  0.955193  0.131016  0.609548  0.804694  0.632596
        3  0.260919  0.783467  0.593433  0.033426  0.512019  0.436653
        4  0.131842  0.799367  0.182828  0.683330  0.019485  0.363371
        5  0.498784  0.873495  0.383811  0.699289  0.480447  0.587165
        6  0.388771  0.395757  0.745237  0.628406  0.784473  0.588529
        7  0.147986  0.459451  0.310961  0.706435  0.100914  0.345149
        8  0.394947  0.863494  0.585030  0.565944  0.356561  0.553195
        9  0.689260  0.865243  0.136481  0.386582  0.730399  0.561593
        # 
        In [7]: cols = df.columns.tolist()
        # 
        In [8]: cols
        Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']
        
      • Rearrange cols in any way you want. This is how I moved the last element to the first position:
        用你希望的方式重新排列这些 cols。下面是我将最后一列元素移到第一列的方式:

      • In [12]: cols = cols[-1:] + cols[:-1]
        #
        In [13]: cols
        Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]
        
      • Then reorder the dataframe like this:
        排序后的 dataframe 如下:

      • In [16]: df = df[cols]  #    OR    df = df.ix[:, cols]
        # 
        In [17]: df
        Out[17]:
               mean         0         1         2         3         4
        0  0.445543  0.445598  0.173835  0.343415  0.682252  0.582616
        1  0.670208  0.881592  0.696942  0.702232  0.696724  0.373551
        2  0.632596  0.662527  0.955193  0.131016  0.609548  0.804694
        3  0.436653  0.260919  0.783467  0.593433  0.033426  0.512019
        4  0.363371  0.131842  0.799367  0.182828  0.683330  0.019485
        5  0.587165  0.498784  0.873495  0.383811  0.699289  0.480447
        6  0.588529  0.388771  0.395757  0.745237  0.628406  0.784473
        7  0.345149  0.147986  0.459451  0.310961  0.706435  0.100914
        8  0.553195  0.394947  0.863494  0.585030  0.565944  0.356561
        9  0.561593  0.689260  0.865243  0.136481  0.386582  0.730399
        
    • freddygv - vote: 675

      • You could also do something like this:
        这样可以:

      • df = df[['mean', '0', '1', '2', '3']]
        
      • You can get the list of columns with:
        下面的代码用来得到列的列表:

      • cols = list(df.columns.values)
        
      • The output will produce:
        输出:

      • ['0', '1', '2', '3', 'mean']
        
      • …which is then easy to rearrange manually before dropping it into the first function
        这挺方便的。

    • fixxxer - vote: 367

      • Just assign the column names in the order you want them:
        像这样按你需要的顺序来处理列名即可:

      • In [39]: df
        Out[39]: 
                  0         1         2         3         4  mean
        0  0.172742  0.915661  0.043387  0.712833  0.190717     1
        1  0.128186  0.424771  0.590779  0.771080  0.617472     1
        2  0.125709  0.085894  0.989798  0.829491  0.155563     1
        3  0.742578  0.104061  0.299708  0.616751  0.951802     1
        4  0.721118  0.528156  0.421360  0.105886  0.322311     1
        5  0.900878  0.082047  0.224656  0.195162  0.736652     1
        6  0.897832  0.558108  0.318016  0.586563  0.507564     1
        7  0.027178  0.375183  0.930248  0.921786  0.337060     1
        8  0.763028  0.182905  0.931756  0.110675  0.423398     1
        9  0.848996  0.310562  0.140873  0.304561  0.417808     1
        # 
        In [40]: df = df[['mean', 4,3,2,1]]
        
      • Now, ‘mean’ column comes out in the front:
        处理后,‘mean’ 列会在开头:

      • In [41]: df
        Out[41]: 
           mean         4         3         2         1
        0     1  0.190717  0.712833  0.043387  0.915661
        1     1  0.617472  0.771080  0.590779  0.424771
        2     1  0.155563  0.829491  0.989798  0.085894
        3     1  0.951802  0.616751  0.299708  0.104061
        4     1  0.322311  0.105886  0.421360  0.528156
        5     1  0.736652  0.195162  0.224656  0.082047
        6     1  0.507564  0.586563  0.318016  0.558108
        7     1  0.337060  0.921786  0.930248  0.375183
        8     1  0.423398  0.110675  0.931756  0.182905
        9     1  0.417808  0.304561  0.140873  0.310562
        

标签:Python,cols,DataFrame,df,dataframe,四十三,Out,columns,mean
来源: https://blog.csdn.net/asd123pwj/article/details/122528645

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有