我有一个pandas dataframe。我想按升序打印其中一列的唯一值。我是这样做的:
import pandas as pd df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() print a.sort()
问题是我得到的输出是None。
None
x9ybnkn61#
对于大 Dataframe :
df['A'].drop_duplicates().sort_values()
zvokhttg2#
我更喜欢oneliner:
print(sorted(df['Column Name'].unique()))
yqyhoc1h3#
我建议使用numpy的sort,因为pandas在后台就是这么做的:
import numpy as np np.sort(df.A.unique())
但在Pandas中做所有的事情也是有效的。
ktca8awb4#
另一种方法是使用***set***数据类型。
**Sets 的一些特性:**Sets是无序的,可以包含混合数据类型,集合中的元素不能重复,是可变的。
解决您的问题:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) sorted(set(df.A))
列表类型答案:
[1, 2, 3, 6, 8]
kknvjkwl5#
奇怪的是没有人提出这个建议:
df['A'].sort_values().unique()
nuypyhwy6#
sorted(iterable):从 iterable 中的项目返回一个新的排序列表。
sorted(iterable)
代码
import pandas as pd df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() print(sorted(a))
输出
wlwcrazw7#
sort原地排序,所以不返回任何内容:
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)
因此,在调用sort之后,必须再次调用print a。例如:
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]
kh212irz8#
您还可以使用drop_duplicates()代替unique()
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].drop_duplicates() a.sort() print a
mwyxok5s9#
今天我自己也遇到了这个问题。我认为你的代码返回'None'(和我用同样的方法得到的结果一样)的原因是
a.sort()
调用sort函数来改变列表a。在我的理解中,这是一个修改命令。要查看结果,必须使用print(a)。我的解决方案,当我试图把所有东西都保存在pandas中时:
pd.Series(df['A'].unique()).sort_values()
9条答案
按热度按时间x9ybnkn61#
最快代码
对于大 Dataframe :
zvokhttg2#
我更喜欢oneliner:
yqyhoc1h3#
我建议使用numpy的sort,因为pandas在后台就是这么做的:
但在Pandas中做所有的事情也是有效的。
ktca8awb4#
另一种方法是使用***set***数据类型。
**Sets 的一些特性:**Sets是无序的,可以包含混合数据类型,集合中的元素不能重复,是可变的。
解决您的问题:
列表类型答案:
kknvjkwl5#
奇怪的是没有人提出这个建议:
nuypyhwy6#
sorted(iterable)
:从 iterable 中的项目返回一个新的排序列表。代码
输出
wlwcrazw7#
sort
原地排序,所以不返回任何内容:因此,在调用
sort
之后,必须再次调用print a
。例如:
kh212irz8#
您还可以使用drop_duplicates()代替unique()
mwyxok5s9#
今天我自己也遇到了这个问题。我认为你的代码返回'None'(和我用同样的方法得到的结果一样)的原因是
调用sort函数来改变列表a。在我的理解中,这是一个修改命令。要查看结果,必须使用print(a)。
我的解决方案,当我试图把所有东西都保存在pandas中时: