nil*_*ash 3 python sorting dataframe pandas
嗨,我想使用给定的输入列表值对 DataFrame 列进行排序。我的清单看起来像:
inputlist
[309.0, 585.0, 221.0, 789.0, 195.0, 354.0, 307.0, 698.0, 426.0]
Run Code Online (Sandbox Code Playgroud)
而 DataFrame 是:
val kaywords
195 keyword3
221 keyword5
307 keyword8
309 keyword9
354 keyword0
426 keyword1
585 keyword2
698 keyword4
789 keyword33
Run Code Online (Sandbox Code Playgroud)
在这里,我想根据给定的“输入列表”对 DataFrame 列“val”进行排序。
我期待以下输出:
val kaywords
309 keyword9
585 keyword2
221 keyword5
789 keyword33
195 keyword3
354 keyword0
307 keyword8
698 keyword4
426 keyword1
Run Code Online (Sandbox Code Playgroud)
使用ordered categorical,但首先将列表的值转换为整数:
inputlist = [309.0, 585.0, 221.0, 789.0, 195.0, 354.0, 307.0, 698.0, 426.0]
df['val'] = pd.Categorical(df['val'], ordered=True, categories=[int(x) for x in inputlist])
df = df.sort_values('val')
print (df)
val kaywords
3 309 keyword9
6 585 keyword2
1 221 keyword5
8 789 keyword33
0 195 keyword3
4 354 keyword0
2 307 keyword8
7 698 keyword4
5 426 keyword1
Run Code Online (Sandbox Code Playgroud)
如果所有值都val存在于 中,则另一个想法是inputlist:
inputlist = [int(x) for x in inputlist]
df = df.set_index('val').reindex(inputlist).reset_index()
Run Code Online (Sandbox Code Playgroud)