簡體   English   中英

使用帶有列表的列對 pandas DataFrame 進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM