python - 使用给定的输入列表对 DataFrame 列进行排序
问题描述
您好我想用给定的输入列表值对 DataFrame 列进行排序。我的清单看起来像:
inputlist
[309.0, 585.0, 221.0, 789.0, 195.0, 354.0, 307.0, 698.0, 426.0]
和 DataFrame 是:
val kaywords
195 keyword3
221 keyword5
307 keyword8
309 keyword9
354 keyword0
426 keyword1
585 keyword2
698 keyword4
789 keyword33
在这里,我想根据给定的“inputlist”对 DataFrame 列“val”进行排序。
我期待以下输出:
val kaywords
309 keyword9
585 keyword2
221 keyword5
789 keyword33
195 keyword3
354 keyword0
307 keyword8
698 keyword4
426 keyword1
解决方案
使用 ordered categorical
,但首先将 list 的值转换为整数:
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
如果所有值都val
存在于inputlist
:
inputlist = [int(x) for x in inputlist]
df = df.set_index('val').reindex(inputlist).reset_index()
推荐阅读
- xcode - Xcode 10.2.1 无法索引或构建任何项目
- ruby - 如何编写一个接受并返回带有条件的数组的方法
- python - 导入pyspark后如何恢复泡菜?
- forms - 模板驱动的验证需要在取消按钮中工作
- java - Java切换目录,然后用参数触发命令
- angular - 使用异步导入模块延迟 NgModule 声明
- postgresql - 通过python将Json字段存储在外部文件(.json)中
- javascript - Problem with event listeners not being added again, once React unmounts them
- c# - 有没有办法专门为 ASP.NET Core 2.2 MVC 中的 SignalR 集线器设置 CORS 策略?
- android - 如何在单击时将声音文件附加到按钮