给出一个数据框和一个列表,以及一个数据框的一列的值。 (列表相等,只要数据框的行和每个值恰好显示为一) 如何根据列表中的顺序对数据框中的行进行排序?
import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'],
'income': [40000, 50000, 42000]})
z = ["Jane", "Alice", "Bob"]
答案 0 :(得分:1)
让我们对pd.Categorical
做argsort
df=df.iloc[pd.Categorical(df.user,z).argsort()]
df
user income
1 Jane 50000
2 Alice 42000
0 Bob 40000
或reindex
df=df.set_index('user').reindex(z).reset_index()