Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取dataframe列元素的唯一列表?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何获取dataframe列元素的唯一列表?

Python 如何获取dataframe列元素的唯一列表?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试获取pandas dataframe列中每个唯一字符串的列表: import pandas as pd catalog = {'code': ['A001', 'A001', 'A001', 'A002', 'A002'], 'title': ['director', 'president', 'vice president', 'sales director', 'sales vice president']} catalog=pd.DataFrame(catalog) ##

我正在尝试获取pandas dataframe列中每个唯一字符串的列表:

import pandas as pd

catalog = {'code': ['A001', 'A001', 'A001', 'A002', 'A002'], 'title': ['director', 'president', 'vice president', 'sales director', 'sales vice president']}

catalog=pd.DataFrame(catalog)

## unique column values ##
codes = catalog['code'].unique()

for code in codes:
     titles = catalog[catalog == code]['title'].tolist()
     print(titles)
这将给出下一个输出:

[nan, nan, nan, nan, nan]
[nan, nan, nan, nan, nan]
预期输出可能如下所示:

['director', 'president', 'vice president']
['sales director', 'sales vice president']
我错过了什么?
是否有其他方法来完成此任务?

使用groupby比迭代唯一代码更容易:

catalog.groupby("code").title.apply(list)

code
A001    [director, president, vice president]
A002    [sales director, sales vice president]
Name: title, dtype: object

使用groupby比迭代唯一代码更容易:

catalog.groupby("code").title.apply(list)

code
A001    [director, president, vice president]
A002    [sales director, sales vice president]
Name: title, dtype: object
试一试

catalog.groupby('code')['title'].unique()
code
A001     [director, president, vice president]
A002    [sales director, sales vice president]
Name: title, dtype: object
试一试

catalog.groupby('code')['title'].unique()
code
A001     [director, president, vice president]
A002    [sales director, sales vice president]
Name: title, dtype: object

您的代码存在一个问题,即在分配
title
变量时比较完整的数据帧,而不是与列进行比较:

for code in codes:
    titles = catalog[catalog['code'] == code]['title'].tolist()
    print(titles)
或:



您的代码存在一个问题,即在分配
title
变量时比较完整的数据帧,而不是与列进行比较:

for code in codes:
    titles = catalog[catalog['code'] == code]['title'].tolist()
    print(titles)
或:



我可能错了,但基于OP的尝试,看起来他们想要每个
code
的所有值的列表,而不仅仅是每个
code
@sacuL问题标题的唯一值~我可能错了,但是基于OP的尝试,看起来他们想要每个
code
的所有值的列表,不仅仅是每个
代码中的唯一值
@sacuL问题标题混乱~只是想澄清一下,您想要一个
代码中每个唯一值的所有值的列表,对吗?因此,如果在code
A001
中有两行
director
,则生成的列表将有
director
两次?是的,这是必须澄清的想法,您希望在
code
中为每个唯一值列出所有值,对吗?因此,如果在code
A001
中有两行
director
,则生成的列表将有两次
director
?是的,这就是想法