我正在尝试编写一个函数,该函数将Pandas
DataFrame
(df)和列名(col)作为输入,并按排序顺序返回列中所有唯一值的列表。我试图在没有任何模块方法的情况下这样做。
我使用以下代码:
import pandas as pd
def list_col(df, col):
"""puts unique items of given column in a list"""
f = pd.df()
l = []
r = f.loc[:,col]
for i in r:
if i not in l:
l.append(i)
return l.sort()
但是,我收到错误消息:
AttributeError: module 'pandas' has no attribute 'df'
我该如何解决这个问题?谢谢!
答案 0 :(得分:5)
我认为可以使用unique
并致电sorted
:
def list_col(df, col):
return sorted(df[col].unique())
或转换为set
,list
并致电sorted
:
def list_col(df, col):
return sorted(list(set(df[col])))
<强>示例强>:
df = pd.DataFrame({'A':list('ddcdef'),
'B':[4,5,4,5,5,4],
'F':list('acabbb')})
print (df)
A B F
0 d 4 a
1 d 5 c
2 c 4 a
3 d 5 b
4 e 5 b
5 f 4 b
def list_col(df, col):
return sorted(df[col].unique())
print (list_col(df, 'F'))
['a', 'b', 'c']