我有一个具有不同值的数据集,如下所示:
name X Y
a 1 8
b 11 12
c 8 8
d 4 13
e 12 4
f 11 11
g 0 8
h 0 9
i 11 7
和基于它的图:
我需要获取的是一个数据帧,该数据帧的前4个(红色圆圈)或前“任意数字”。类似的东西:
name X Y
b 11 12
f 11 11
i 11 7
c 8 8
我一直在使用以下内容,但效果不佳:
df1 = df.sort_values(['A', 'B'],ascending=False)
print(df1)
答案 0 :(得分:2)
您可以尝试以下操作:
df['Z']= (df.X*df.Y)
df2=(df.sort_values('Z',ascending=False).head(4))
df2[['X','Y']]
输出:
X Y
11 12
11 11
11 7
8 8
答案 1 :(得分:0)
不明白“最高”的真正含义是什么。红色圆圈中的点并非在X轴或Y轴上都排在前4位。
所以我认为您的意思可能是指定点与参考点之间的距离(例如[0,0]或其他)。 如果是这样,可以尝试定义一个新的参数。
df ['c'] = np.sqrt((df ['x']-X0)** 2+(df ['y']-Y0)** 2)
df = df.sorted_value(['c'],ascending = False)