Pythonic在dataframe中的列子集中查找唯一值的方法

Pythonic在dataframe中的列子集中查找唯一值的方法,python,for-loop,pandas,list-comprehension,data-analysis,Python,For Loop,Pandas,List Comprehension,Data Analysis,我最近一直在使用熊猫来进行数据分析,我正试图在一些事情上表现得恰到好处。以下代码可以很好地在某些列子集中查找所有唯一值: import pandas as pd dataframe = pd.read_csv("sourcefile.csv", na_values=[" ",""]) col_names = list(dataframe) my_cols = [name for name in col_names if "STRING" in name] unique_urls = set()

我最近一直在使用熊猫来进行数据分析,我正试图在一些事情上表现得恰到好处。以下代码可以很好地在某些列子集中查找所有唯一值:

import pandas as pd
dataframe = pd.read_csv("sourcefile.csv", na_values=[" ",""])
col_names = list(dataframe)
my_cols = [name for name in col_names if "STRING" in name]
unique_urls = set()
for col in my_cols:
    for url in list(dataframe[col]):
        unique_urls.add(url)
但是我觉得有一种更好的方法来为循环执行最后两个嵌套的
。任何建议,谢谢

编辑:根据这里的一些答案,我可能找到了更好的方法:

以下代码起作用:

import pandas as pd
dataframe = pd.read_csv("sourcefile.csv", na_values=[" ",""])
col_names = list(dataframe)
my_cols = [name for name in col_names if "STRING" in name]
unique_urls = pd.unique(dataframe[my_cols].values.ravel())
我做了一个时间测试:

In [8]: def unique_items_1():
    unique_urls = set()
    for col in my_cols:
        for item in list(dataframe[col]):
            unique_items.add(item)          

In [9]: %timeit unique_items_1()
1000 loops, best of 3: 436 µs per loop

In [10]: %timeit unique_items_2 = pd.unique(dataframe[my_cols].values.ravel())
1000 loops, best of 3: 462 µs per loop

由于这两种方法所用的时间大致相同,而且
set()
方法的速度稍快,所以我仍然很好奇专家们认为什么是最好的方法。谢谢

此问题及其答案可能相关(可能重复):谢谢ajcr-该线程似乎有两个相同的选项,使用
set()
unique
。我想我的问题仍然不是如何做到这一点,而是哪一个是“最佳实践”,也就是说,对于使用熊猫进行数据分析的人来说,哪一个看起来最直观?谢谢