Veg*_*ega 3 sorting list dataframe pandas
我有一个数字列表:
[18, 22, 20]
Run Code Online (Sandbox Code Playgroud)
和一个数据框:
Id | node_id
UC5E9-r42JlymhLPnDv2wHuA | 20
UCFqcNI0NaAA21NS9W3ExCRg | 18
UCrb6U1FuOP5EZ7n7LfOJMMQ | 22
Run Code Online (Sandbox Code Playgroud)
列表编号映射到 node_id 编号。node_id 编号的顺序很重要,它们必须按列表编号的顺序排列。
所以数据帧的顺序是错误的。
我需要按列表值对数据框进行排序。
最终结果应该是:
Id | node_id
UCFqcNI0NaAA21NS9W3ExCRg | 18
UCrb6U1FuOP5EZ7n7LfOJMMQ | 22
UC5E9-r42JlymhLPnDv2wHuA | 20
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
使用 sorted Categorical,因此您可以使用DataFrame.sort_values:
L = [18, 22, 20]
df['node_id'] = pd.Categorical(df['node_id'], ordered=True, categories=L)
df = df.sort_values('node_id')
print (df)
Id node_id
1 UCFqcNI0NaAA21NS9W3ExCRg 18
2 UCrb6U1FuOP5EZ7n7LfOJMMQ 22
0 UC5E9-r42JlymhLPnDv2wHuA 20
Run Code Online (Sandbox Code Playgroud)
如果要避免Categorical列:
df = df.iloc[df['node_id'].map({v: k for k, v in enumerate(L)}).argsort()]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |