pandas.Series.unique()在分析字符串时给np.unique()不同的结果

时间:2019-02-15 09:27:04

标签: python pandas numpy

我有一种方法来对大型数据集进行体素化,该方法为所有唯一体素创建一个二进制值(12个字节),然后我可以使用df.isin()来获取一个子集进行查询。

我使用pandas.Series.unique()作为此查询的输入,但是得到了奇怪的结果,因此尝试了np.unique()并成功了。我的问题为什么我会得到不同的结果?

import pandas as pd
import numpy as np
import struct

def voxel(tmp):

    binarize = lambda x: struct.pack('i', int((x * 100) / 5))

    tmp.loc[:, 'xb'] = tmp.x.apply(binarize)
    tmp.loc[:, 'yb'] = tmp.y.apply(binarize)
    tmp.loc[:, 'zb'] = tmp.z.apply(binarize)
    tmp.loc[:, 'B'] = tmp.xb + tmp.yb + tmp.zb

    return tmp

X, Y, Z = np.meshgrid(np.arange(0, 100),
                      np.arange(0, 100),
                      np.arange(0, 100))

grid = pd.DataFrame(data=np.vstack([X.flatten(), Y.flatten(), Z.flatten()]).T, 
                    columns=['x', 'y', 'z'])

grid = voxel(grid)

print 'numpy:', len(np.unique(grid.B)), 'pandas:', len(grid.B.unique())

哪个生产

numpy:100000 pandas:99

我已经在RHEL 7.5.1804和MacBook上使用带有Python 2.7.14的Pandas 0.23.0对此进行了测试

0 个答案:

没有答案