在列中查找唯一值,然后对它们进行排序

时间:2015-08-18 12:10:49

标签: python pandas

我有一个pandas数据帧。我想按升序打印其中一列的唯一值。我就是这样做的:

import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()

问题在于我输出了None

7 个答案:

答案 0 :(得分:53)

sorted从iterable中的项目返回一个新的排序列表。

CODE

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]

答案 1 :(得分:11)

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]

答案 2 :(得分:5)

您也可以使用drop_duplicates()代替unique()

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a

答案 3 :(得分:3)

我建议使用numpy的排序,因为无论如何大熊猫在后台做的是:

import numpy as np
np.sort(df.A.unique())

但是在熊猫中做所有事情也是有效的。

答案 4 :(得分:3)

我更喜欢oneliner:

print(sorted(df['Column Name'].unique()))

答案 5 :(得分:2)

今天我自己回答了这个问题。我认为您的代码返回“ None”(正是我使用相同方法获得的结果)的原因是

a.sort()

调用sort函数对列表a进行变异。以我的理解,这是一个修改命令。要查看结果,您必须使用print(a)。

我的解决方案,因为我试图将所有东西都保留在大熊猫中:

pd.Series(df['A'].unique()).sort_values()

答案 6 :(得分:0)

另一种方法是使用 set 数据类型。

集合的某些特征:集合是无序的,可以包含混合数据类型,集合中的元素不能重复,是可变的。

解决您的问题:

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))

列表类型的答案:

[1, 2, 3, 6, 8]