簡體   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