【发布时间】:2013-06-06 17:17:48
【问题描述】:
我有一个包含二进制字符串(0 和 1)的大型 Pandas 数据框(大多数情况下是 Numpy ndarray 的子类)。我需要找到这些字符串中所有零的位置,然后标记它们。此外,我希望零的位置相对稀疏(约占所有位位置的 1%)。
基本上,我想运行这样的东西:
import pandas as pd
x = pd.Series([ '11101110', '11111101' ], ) # start with strings
x = pd.Series([ 0b11101110, 0b11111101 ], ) # ... or integers of a known bit length
zero_positions = find_zero_positions( x )
屈服zero_positions =...
value
row bit
0 4 0
0 0
1 1 0
我尝试了几种不同的方法来做到这一点,但没有比一次循环遍历一行更好的方法了。 (编辑:我要查看的实际字符串比这里的 8 位示例长得多,因此查找表不起作用。)
我不确定将其作为字符串问题(Pandas 的Vectorized string methods 不提供子字符串位置查找方法)或数字问题(使用类似numpy.unpackbits,也许吧?)。
【问题讨论】:
-
如果您只是在字节中查找零位,为什么不使用查找表?
-
好点,@gnibbler。实际上,我真正想要使用的输入字符串要长得多(128 位),这使得查找表变得不切实际。
标签: python string numpy binary pandas