我的 Pandas 資料框包含從 csv 檔案讀取的以下資料:
id,values
1001-MAC, 10
1034-WIN, 20
2001-WIN, 15
3001-MAC, 45
4001-LINUX, 12
4001-MAC, 67
df = pd.read_csv('example.csv')
df.set_index('id', inplace=True)
我必須根據給定的后綴串列 = [“WIN”、“MAC”、“LINUX”] 的 id 列順序對這個資料框進行排序。因此,我想得到以下輸出:
id,values
1034-WIN, 20
2001-WIN, 15
1001-MAC, 10
3001-MAC, 45
4001-MAC, 67
4001-LINUX, 12
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
這是一種方法:
import pandas as pd
df = pd.read_csv('example.csv')
idx = df.id.str.split('-').str[1].sort_values(ascending=False).index
df = df.loc[idx]
df.set_index('id', inplace=True)
print(df)

uj5u.com熱心網友回復:
嘗試:
df = df.sort_values(
by=["id"], key=lambda x: x.str.split("-").str[1], ascending=False
)
print(df)
印刷:
id values
1 1034-WIN 20
2 2001-WIN 15
0 1001-MAC 10
3 3001-MAC 45
5 4001-MAC 67
4 4001-LINUX 12
uj5u.com熱心網友回復:
將一列添加到僅包含前綴的資料框中(為此使用 str.split() 函式)并根據該新列對整個 df 進行排序。
uj5u.com熱心網友回復:
import pandas as pd
df = pd.DataFrame({
"id":["1001-MAC", "1034-WIN", "2001-WIN", "3001-MAC", "4001-LINUX", "4001-MAC"],
"values":[10, 20, 15, 45, 12, 67]
})
df["id_postfix"] = df["id"].apply(lambda x: x.split("-")[1])
df = df.sort_values("id_postfix", ascending=False)
df = df[["id", "values"]]
print(df)
uj5u.com熱心網友回復:
請務必回答問題。提供詳細資訊并分享您的研究!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522674.html
下一篇:在C中排序和列印目錄和子目錄
