[英]sort pandas DataFrame with a column with list
我想根据“boxes”列 0.8299769、0.04913859 中数组的第一个值按降序对 dataframe 的行进行排序。 我该怎么做。
classes boxes scores
0 7 [0.8299769, 0.27715018, 0.91143125, 0.54477763] 0.999721
2 7 [0.04913859, 0.35264254, 0.15933079, 0.64380944] 0.999397
试试这个,基于它创建伪列sort
排序并删除
df = pd.DataFrame({"classes": [7, 2], "boxes": [[0.04913859, 0.35264254, 0.15933079, 0.64380944],
[0.8299769, 0.27715018, 0.91143125, 0.54477763]],
"scores": [0.999721, 0.999397]})
df['sort'] = df['boxes'].apply(lambda x: x[0])
df.sort_values(by='sort', ascending=False).drop(columns=['sort'])
classes boxes scores
1 2 [0.8299769, 0.27715018, 0.91143125, 0.54477763] 0.999397
0 7 [0.04913859, 0.35264254, 0.15933079, 0.64380944] 0.999721
您可以获取所需列的第一个值并创建一个新列并对该列进行排序然后将其删除
df['new_col'] = df.boxes.apply(lambda x: x[0])
df=df.sort_values('new_col')
df=df.drop(['new_col'],axis=1)
boxes
1 [0.04913859, 0.35264254, 0.15933079, 0.64380944]
0 [0.8299769, 0.27715018, 0.91143125, 0.54477763]
您可以使用 pandas sort_values class,如下所示:
df.sort_values(by='boxes', ascending=False, inplace=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.