У меня есть фреймворк pandas. Я хочу напечатать уникальные значения одного из его столбцов в порядке возрастания. Вот как я это делаю:
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()
Проблема в том, что я получаю None
на выходе.
a.sort()
изменяетa
и ничего не возвращает, поэтому замените на:a.sort(); print a
Ответы:
sorted
вернуть новый отсортированный список из элементов в итерации.КОД
import pandas as pd df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() print sorted(a)
ВЫВОД
[1, 2, 3, 6, 8]
источник
sort
сортирует на месте, поэтому ничего не возвращает:In [54]: df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() a.sort() a Out[54]: array([1, 2, 3, 6, 8], dtype=int64)
Так что вам придется звонить
print a
снова после звонкаsort
.Например.:
In [55]: df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() a.sort() print(a) [1 2 3 6 8]
источник
Вы также можете использовать drop_duplicates () вместо unique ()
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].drop_duplicates() a.sort() print a
источник
drop_duplicates()
что он в 3 раза быстрее, чем unique () на фрейме данных из 14107693 строк [Pandas 0.18]Я предпочитаю один лайнер:
print(sorted(df['Column Name'].unique()))
источник
Сегодня сам столкнулся с этим вопросом. Я думаю, причина того, что ваш код возвращает «Нет» (именно то, что я получил, используя тот же метод), заключается в том, что
вызывает функцию сортировки для изменения списка a. В моем понимании это команда модификации. Чтобы увидеть результат, вы должны использовать print (a).
Мое решение, поскольку я пытался сохранить все в пандах:
pd.Series(df['A'].unique()).sort_values()
источник
pandas
решение, потому что оно ставитNaN
значения в конце и работает с массивами смешанных типов.Я бы предложил использовать сортировку numpy, поскольку в любом случае это то, что pandas делает в фоновом режиме:
import numpy as np np.sort(df.A.unique())
Но делать все в пандах тоже можно.
источник
Другой способ - использовать заданный тип данных.
Некоторые характеристики наборов : наборы неупорядочены, могут включать смешанные типы данных, элементы в наборе не могут повторяться, изменчивы.
Решение вашего вопроса:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) sorted(set(df.A))
Ответ в виде списка :
[1, 2, 3, 6, 8]
источник