Сортировка по заданному значению c - PullRequest
2 голосов
/ 20 января 2020

У меня есть список, который содержит текст и его счет TFIDF:

[['penguji', 117    0.594552 Name: rank, dtype: float64], 
 ['saat', 126    0.263102 Name: rank, dtype: float64], 
 ['melakukan', 92    0.223703 Name: rank, dtype: float64], 
 ['ini', 60    0.772189 Name: rank, dtype: float64], 
 ['kebenaran', 73    0.318094 Name: rank, dtype: float64], 
 ['selain', 136    0.234254 Name: rank, dtype: float64], 
 ['khusus', 76    0.553491 Name: rank, dtype: float64], 
 ['dan', 31    0.782068 Name: rank, dtype: float64],...]

, затем я хочу отсортировать счет, поэтому я закодировал это:

TFIDF_Score.sort()
print('Sorted list:', TFIDF_Score)

В результате получается сортировка текста, когда на самом деле ожидаемый результат - это сортируемая оценка, например:

[['dan', 31    0.782068 Name: rank, dtype: float64],
 ['ini', 60    0.772189 Name: rank, dtype: float64], 
 ['penguji', 117    0.594552 Name: rank, dtype: float64],
 ['khusus', 76    0.553491 Name: rank, dtype: float64], 
 ['kebenaran', 73    0.318094 Name: rank, dtype: float64], 
 ['saat', 126    0.263102 Name: rank, dtype: float64],
 ['selain', 136    0.234254 Name: rank, dtype: float64], 
 ['melakukan', 92    0.223703 Name: rank, dtype: float64],...] 

Как мне поступить с циклом? Все равно спасибо

Ответы [ 2 ]

1 голос
/ 20 января 2020

Предполагая, что вторым элементом является pandas.Series, используйте sorted с key:

import pandas as pd

l = [['aaa', pd.Series([0.2])],
     ['bbb', pd.Series([0.1])]]

sorted(l, key=lambda x: x[1].values, reverse=True)

Выход:

[['aaa', 0    0.2  dtype: float64], 
 ['bbb', 0    0.1  dtype: float64]]
0 голосов
/ 20 января 2020

Попробуйте использовать sorted:

print(sorted(TFIDF_Score, key=lambda x: -x[2]))
...