Python - 在pandas DataFrame中有效地找到所有字符的集合?

时间:2015-07-08 14:49:50

标签: python pandas

我想找到pandas DataFrame中包含的所有唯一字符集。一个有效的解决方案如下:

from operator import add
set(reduce(add, map(unicode, df.values.flatten())))

但是,上面的解决方案需要很长时间才能使用大型DataFrame。有什么更有效的方法呢?

我正在尝试在pandas DataFrame中查找所有唯一字符,以便在将DataFrame作为csv写入磁盘时选择合适的分隔符。

2 个答案:

答案 0 :(得分:0)

从杰夫here

了解到这一点

使用Pandas内置插件应该可行:

a = pd.DataFrame( data=np.random.randint(0,100000,(1000000,20)))

# now pull out unique values (less than a second for 2E7 data points)
b = pd.unique( a.values.ravel() )

答案 1 :(得分:0)

我意识到这是一个古老的问题,但我一直在寻找相同的东西,并认为我会分享给其他任何人。

这可以通过Counter非常快速地完成。

使用unstack()获取数据框中所有值的列表。结果甚至包含每个字符的计数。

from collections import Counter
df = pd.DataFrame({'A': pd.util.testing.rands_array(100, 100000),
                 'B': pd.util.testing.rands_array(100, 100000)})
Counter(''.join(df.unstack().values))

时序:

%timeit Counter(''.join(df.unstack().values))
1.1 s ± 38.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)