我想找到pandas DataFrame中包含的所有唯一字符集。一个有效的解决方案如下:
from operator import add
set(reduce(add, map(unicode, df.values.flatten())))
但是,上面的解决方案需要很长时间才能使用大型DataFrame。有什么更有效的方法呢?
我正在尝试在pandas DataFrame中查找所有唯一字符,以便在将DataFrame作为csv写入磁盘时选择合适的分隔符。
答案 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)