Pandas:如何根据特定的后缀值对行进行排序?

2skhul33  于 2022-10-23  发布在  其他
关注(0)|答案(6)|浏览(137)

我的Pandas Dataframe 包含从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)

我必须根据给定后缀list=[“WIN”,“MAC”,“LINUX”]的id列顺序对 Dataframe 进行排序。因此,我希望得到以下输出:

id,values
 1034-WIN,     20
 2001-WIN,     15
 1001-MAC,     10
 3001-MAC,     45
 4001-MAC,     67
 4001-LINUX,   12

我该怎么做?

evrscar2

evrscar21#

尝试:

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
t30tvxxf

t30tvxxf2#

这里有一种方法:

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)


小时

bxjv4tth

bxjv4tth3#

在只包含前缀的 Dataframe 中添加一列(使用str.split()函数),并根据新列对整个df进行排序。

aor9mmx1

aor9mmx14#

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)
brjng4g3

brjng4g35#

请务必回答问题。提供详细信息并分享您的研究成果!

dxxyhpgq

dxxyhpgq6#


小时
请务必回答这个问题。提供详细信息并分享您的研究成果!

相关问题