python – 将零和1的列解释为二进制并将其存储为整数列
发布时间:2020-12-20 11:52:16 所属栏目:Python 来源:网络整理
导读:我有一个0和1的数据帧.我想将每个列视为其值是整数的二进制表示.进行此转换的最简单方法是什么? 我要这个: df = pd.DataFrame([[1,1],[1,1,0],[0,1]])print df 0 1 20 1 0 11 1 1 02 0 1 13 0 0 1 转换成: 0 121 62 11dtype: int64 尽可能高效. 解决方法
我有一个0和1的数据帧.我想将每个列视为其值是整数的二进制表示.进行此转换的最简单方法是什么?
我要这个: df = pd.DataFrame([[1,1],[1,1,0],[0,1]]) print df 0 1 2 0 1 0 1 1 1 1 0 2 0 1 1 3 0 0 1 转换成: 0 12 1 6 2 11 dtype: int64 尽可能高效. 解决方法
类似的解决方案,但更快:
print (df.T.dot(1 << np.arange(df.shape[0] - 1,-1,-1))) 0 12 1 6 2 11 dtype: int64 时序: In [81]: %timeit df.apply(lambda col: int(''.join(str(v) for v in col),2)) The slowest run took 5.66 times longer than the fastest. This could mean that an intermediate result is being cached. 1000 loops,best of 3: 264 μs per loop In [82]: %timeit (df.T*(1 << np.arange(df.shape[0]-1,-1))).sum(axis=1) 1000 loops,best of 3: 492 μs per loop In [83]: %timeit (df.T.dot(1 << np.arange(df.shape[0] - 1,-1))) The slowest run took 6.14 times longer than the fastest. This could mean that an intermediate result is being cached. 1000 loops,best of 3: 204 μs per loop (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |