Я предпочитаю использовать функцию forEach
, которая имеет собственное закрытие с созданием псевдодиапазона:
var funcs = [];
new Array(3).fill(0).forEach(function (_, i) { // creating a range
funcs[i] = function() {
// now i is safely incapsulated
console.log("My value: " + i);
};
});
for (var j = 0; j < 3; j++) {
funcs[j](); // 0, 1, 2
}
Это выглядит более уродливым, чем диапазоны на других языках, но IMHO менее чудовищным, чем другие решения.
Используйте sort_values
, чтобы отсортировать df по значениям определенного столбца:
In [18]:
df.sort_values('2')
Out[18]:
0 1 2
4 85.6 January 1.0
3 95.5 February 2.0
7 104.8 March 3.0
0 354.7 April 4.0
8 283.5 May 5.0
6 238.7 June 6.0
5 152.0 July 7.0
1 55.4 August 8.0
11 212.7 September 9.0
10 249.6 October 10.0
9 278.8 November 11.0
2 176.5 December 12.0
Если вы хотите отсортировать по двум столбцам, передайте список меток столбцов sort_values
с метками столбцов, упорядоченными в соответствии с приоритетом сортировки. Если вы используете df.sort_values(['2', '0'])
, результат будет отсортирован по столбцу 2
, а затем по столбцу 0
. Конечно, это не имеет смысла для этого примера, потому что каждое значение в df['2']
уникально.
Просто добавьте еще несколько операций с данными. Предположим, что у нас есть dataframe df
, мы можем сделать несколько операций для получения желаемых выходов
ID cost tax label
1 216590 1600 test
2 523213 1800 test
3 250 1500 experiment
df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending = False)
даст sorted
вывод меток как dataframe
index label
0 test 2
1 experiment 1