繁体   English   中英

如何通过指定关键字对 Pandas 数据框中的列名进行排序

[英]How to sort column names in pandas dataframe by specifying keywords

listdict格式指定任何关键字,如下所示
是否可以对数据框中的列进行排序?

df = pd.DataFrame ({  
    "col_cc_7": [0, 0, 0],  
    "col_aa_7": [1, 1, 1],  
    "col_bb_7": [2, 2, 2]})

# before  
col_cc_7, col_aa_7, col_bb_7  
0,        1,        2  
0,        1,        2  
0,        1,        2  

# sort  
custom_sort_key = ["aa", "bb", "cc"]  
# ... sort codes ...  

# after  
col_aa_7, col_bb_7, col_cc_7  
1, 2, 0  
1, 2, 0  
1, 2, 0  

对我来说,你的问题有点令人困惑。

如果您只想对列值进行排序,那么简单的谷歌搜索就可以解决问题,否则,我无法理解这个问题。

df=  df.sort_values(by=['col','col2', "col3"],ascending=[True,True,False]) 

by=设置排序的顺序,升序是不言自明的。

我们可以按中间值拆分并创建您的列的字典,然后在我们将其分配回来之前应用排序。 我添加了一些不属于您的额外列来显示它们会发生什么。

df = pd.DataFrame ({  
    "col_cc_7": [0, 0, 0],  
    "col_aa_7": [1, 1, 1],  
    "col_bb_7": [2, 2, 2],
    "col_ee_7": [2, 2, 2],
    "col_dd_7": [2, 2, 2]})

custom_sort_key = ["bb", "cc", "aa"]  

col_dict = dict(zip(df.columns,[x.split('_')[1] for x in df.columns.tolist()]))

#{'col_cc_7': 'cc',
# 'col_aa_7': 'aa',
# 'col_bb_7': 'bb',
# 'col_ee_7': 'ee',
# 'col_dd_7': 'dd'}
d = {v:k for k,v in enumerate(custom_sort_key)}


# this will only work on python 3.6 +
new_cols = dict(sorted(col_dict.items(), key=lambda x: d.get(x[1], float('inf'))))

df[new_cols.keys()]
       col_bb_7  col_cc_7  col_aa_7  col_ee_7  col_dd_7
0         2         0         1         2         2
1         2         0         1         2         2
2         2         0         1         2         2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM