Ohu*_*nen 14 python sorting dataframe pandas
鉴于:
from pandas import DataFrame
import pandas as pd
d = {'one':[2,3,1,4,5],
'two':[5,4,3,2,1],
'letter':['a','a','b','b','c']}
df = DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
df然后看起来像这样:
df:
letter one two
0 a 2 5
1 a 3 4
2 b 1 3
3 b 4 2
4 c 5 1
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
f = lambda x,y: x**2 + y**2
test = df.sort(f('one', 'two'))
Run Code Online (Sandbox Code Playgroud)
这应该按照"一"和"二"列的平方值之和对整个数据帧进行排序,并给我:
test:
letter one two
2 b 1 3
3 b 4 2
1 a 3 4
4 c 5 1
0 a 2 5
Run Code Online (Sandbox Code Playgroud)
升序或降序无关紧要.有一个很好而简单的方法吗?我还没找到解决方案.
ayh*_*han 20
您可以创建要在排序中使用的临时列,然后将其删除:
df.assign(f = df['one']**2 + df['two']**2).sort_values('f').drop('f', axis=1)
Out:
letter one two
2 b 1 3
3 b 4 2
1 a 3 4
4 c 5 1
0 a 2 5
Run Code Online (Sandbox Code Playgroud)
and*_*dge 10
df.loc[(df.x ** 2 + df.y ** 2).sort_values().index]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7593 次 |
| 最近记录: |