假設我有一個包含檔案串列及其內容的資料框“df”:
File Field Folder
Users.csv Age UserFolder
Users.csv Name UserFolder
Cars.csv Color CarFolder
Cars.csv Model CarFolder
如果我已經訂購了“欄位”列應該如何排序的串列,我該如何重新排序這個 df?
users_col_order = ['Name', 'Age']
cars_col_order = ['Model', 'Color']
這樣生成的 df 就會像這樣重新排序(我不是想按字母倒序對“欄位”進行排序,這個例子只是巧合):
File Field Folder
Users.csv Name UserFolder
Users.csv Age UserFolder
Cars.csv Model CarFolder
Cars.csv Color CarFolder
uj5u.com熱心網友回復:
首先,將您的新訂單放入字典中:
mapping = {
'Users': ['Name', 'Age'],
'Cars': ['Model', 'Color'],
}
然后,根據這些值正確定位這些值創建一個新列,并使用新列創建File索引Field并對其進行索引:
original_cols = df.columns
for k, v in mapping.items():
df.loc[df['File'] == k '.csv', 'tmp'] = v
df = df.set_index('Field').loc[df['tmp']].reset_index().drop('tmp', axis=1)[original_cols]
輸出:
>>> df
File Field Folder
0 Users.csv Name UserFolder
1 Users.csv Age UserFolder
2 Cars.csv Model CarFolder
3 Cars.csv Color CarFolder
uj5u.com熱心網友回復:
pd.Categorical與ordered=True! _
categories = users_col_order cars_col_order
df['Field'] = pd.Categorical(values = df['Field'],
categories = categories,
ordered = True)
df.sort_values(by='Field')
File Field Folder
Users.csv Name UserFolder
Users.csv Age UserFolder
Cars.csv Model CarFolder
Cars.csv Color CarFolder
如果您愿意,您始終可以創建一個新列Field_categorical以保留Field.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487391.html
上一篇:當樞軸和串列作為輸入給出時,如何讓磁區回傳兩個串列輸出?
下一篇:Python從嵌套字典追加到串列
