首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据栏的订购栏

熊猫数据栏的订购栏
EN

Stack Overflow用户
提问于 2020-04-03 15:31:36
回答 2查看 70关注 0票数 0

我有熊猫的资料如下:

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame({'CATEGORY': [1, 1, 2, 2],
                    'GROUP': ['A', 'A', 'B', 'B'],
                     'XYZ': [3000, 2500, 3000, 3000],
                  'VAL': [3000, 2500, 3000, 3000],
                  'A_CLASS': [3000, 2500, 3000, 3000],
                  'B_CAL': [3000, 4500, 3000, 1000],
                  'C_CLASS': [3000, 2500, 3000, 3000],
                  'A_CAL': [3000, 2500, 3000, 3000],
                  'B_CLASS': [3000, 4500, 3000, 500],
                  'C_CAL': [3000, 2500, 3000, 3000],
                  'ABC': [3000, 2500, 3000, 3000]})
df

CATEGORY   GROUP   XYZ   VAL    A_CLASS  B_CAL  C_CLASS   A_CAL   B_CLASS   C_CAL  ABC  
1          A       3000   1     3000     3000     3000     3000    3000     3000   3000
1          A       2500   2     2500     4500     2500     2500    4500     2500   2500
2          B       3000   4     3000     3000     3000     3000    3000     3000   3000
2          B       3000   1     3000     1000     3000     3000    500      3000   3000

我希望在我最后的数据中按下面的顺序排列

组、类别、所有后缀为"_CAL“的列、所有后缀为"_CLASS”的列、所有其他字段

我的预期产出:

代码语言:javascript
复制
GROUP    CATEGORY   B_CAL    A_CAL   C_CAL   A_CLASS   C_CLASS    B_CLASS   XYZ   VAL   ABC 
A        1          3000     3000    3000    3000      3000       3000      3000   1    3000
A        1          4500     2500    2500    2500      2500       4500      2500   2    2500
A        1          8000     7000    8000    8000      8000       8000      8000   5    8000
B        2          3000     3000    3000    3000      3000       3000      3000   4    3000
B        2          1000     3000    3000    3000      3000       500       3000   1    3000
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-03 15:38:13

你只需要玩琴弦

代码语言:javascript
复制
cols = df.columns
cols_sorted = ["GROUP", "CATEGORY"] +\
              [col for col in cols if col.endswith('_CAL')] +\
              [col for col in cols if col.endswith('_CLASS')]
cols_sorted += sorted([col for col in cols if col not in cols_sorted])

df = df[cols_sorted]
票数 2
EN

Stack Overflow用户

发布于 2020-04-03 15:41:03

sorted

代码语言:javascript
复制
first = ['GROUP','CATEGORY']
cols = sorted(df.columns.difference(first),
              key=lambda x: (not x.endswith('_CAL'), not x.endswith('_CLASS')))

代码语言:javascript
复制
df[first+cols]

   GROUP  CATEGORY  A_CAL  B_CAL  C_CAL  A_CLASS  B_CLASS  C_CLASS   ABC   VAL  \
0     A         1   3000   3000   3000     3000     3000     3000  3000  3000   
1     A         1   2500   4500   2500     2500     4500     2500  2500  2500   
2     B         2   3000   3000   3000     3000     3000     3000  3000  3000   
3     B         2   3000   1000   3000     3000      500     3000  3000  3000   

    XYZ  
0  3000  
1  2500  
2  3000  
3  3000  

有关更多详细信息,请参见here's a similar one的详细说明

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61015298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档