Ответ 1
sorted
возвращает новый отсортированный список из элементов в iterable.
КОД
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print sorted(a)
OUTPUT
[1, 2, 3, 6, 8]
У меня есть фреймворк pandas. Я хочу напечатать уникальные значения одного из своих столбцов в порядке возрастания. Вот как я это делаю:
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()
Проблема в том, что я получаю None
для вывода.
sorted
возвращает новый отсортированный список из элементов в iterable.
КОД
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print sorted(a)
OUTPUT
[1, 2, 3, 6, 8]
sort
сортирует inplace, поэтому ничего не возвращает:
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
Я бы предложил использовать сортировку numpy, так как в любом случае pandas делает в фоновом режиме:
import numpy as np
np.sort(df.A.unique())
Но все действия в pandas также действительны.
Я предпочитаю oneliner:
print(sorted(df['Column Name'].unique()))
Наткнулся сегодня на вопрос сам. Я думаю, что причина того, что ваш код возвращает "None" (именно то, что я получил, используя тот же метод) в том, что
a.sort()
вызывает функцию сортировки, чтобы изменить список a. В моем понимании, это команда модификации. Чтобы увидеть результат, вы должны использовать print (a).
Мое решение, как я пытался держать все в пандах:
pd.Series(df['A'].unique()).sort_values()
Другой способ - использовать заданный тип данных.
Некоторые характеристики Наборов: Наборы неупорядочены, могут включать в себя смешанные типы данных, элементы в наборе не могут повторяться, являются изменяемыми.
Решение вашего вопроса:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))
Ответ в списке Тип:
[1, 2, 3, 6, 8]