我正在尝试编写一个函数,它将一个 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'
我该如何解决这个问题?谢谢!
请您参考如下方法:
我认为可以使用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']
