查找列中的唯一值,然后对它们进行排序
Find the unique values in a column and then sort them
我有一个 pandas 数据框。我想按升序打印其中一列的唯一值。我就是这样做的:
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()
问题是我的输出是 None
。
sort
就地排序,所以 returns 什么都没有:
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)
所以你必须在调用sort
之后再次调用print a
。
例如:
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]
sorted(iterable)
:Return 来自 iterable 中项目的新排序列表。
代码
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]
我建议使用 numpy 的排序,因为它无论如何都是 pandas 在后台做的事情:
import numpy as np
np.sort(df.A.unique())
但是pandas中的所有操作也是有效的。
您也可以使用 drop_duplicates() 而不是 unique()
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a
我更喜欢oneliner:
print(sorted(df['Column Name'].unique()))
今天自己遇到了这个问题。我认为您的代码 returns 'None' 的原因(正是我使用相同方法得到的代码)是
a.sort()
正在调用排序函数来改变列表a。在我的理解中,这是一个修改命令。要查看结果,您必须使用 print(a).
我的解决方案,因为我试图将所有内容都保存在 pandas:
pd.Series(df['A'].unique()).sort_values()
另一种方法是使用 set 数据类型。
集合的一些特征:集合是无序的,可以包含混合数据类型,集合中的元素不能重复,是可变的.
正在解决您的问题:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))
列表中的答案类型:
[1, 2, 3, 6, 8]
最快的代码
对于大数据帧:
df['A'].drop_duplicates().sort_values()
我有一个 pandas 数据框。我想按升序打印其中一列的唯一值。我就是这样做的:
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()
问题是我的输出是 None
。
sort
就地排序,所以 returns 什么都没有:
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)
所以你必须在调用sort
之后再次调用print a
。
例如:
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]
sorted(iterable)
:Return 来自 iterable 中项目的新排序列表。
代码
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]
我建议使用 numpy 的排序,因为它无论如何都是 pandas 在后台做的事情:
import numpy as np
np.sort(df.A.unique())
但是pandas中的所有操作也是有效的。
您也可以使用 drop_duplicates() 而不是 unique()
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a
我更喜欢oneliner:
print(sorted(df['Column Name'].unique()))
今天自己遇到了这个问题。我认为您的代码 returns 'None' 的原因(正是我使用相同方法得到的代码)是
a.sort()
正在调用排序函数来改变列表a。在我的理解中,这是一个修改命令。要查看结果,您必须使用 print(a).
我的解决方案,因为我试图将所有内容都保存在 pandas:
pd.Series(df['A'].unique()).sort_values()
另一种方法是使用 set 数据类型。
集合的一些特征:集合是无序的,可以包含混合数据类型,集合中的元素不能重复,是可变的.
正在解决您的问题:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))
列表中的答案类型:
[1, 2, 3, 6, 8]
最快的代码
对于大数据帧:
df['A'].drop_duplicates().sort_values()