python中是否有内置函数将二进制字符串(例如'111111111111')转换为二进制补码整数 -1?
问题:
如何在 Pandas 数据框中分别考虑每一行(并可能用 NaN 替换它们),从每一行中删除重复的单元格值?
如果我们可以将所有新创建的 NaN 移到每一行的末尾,那就更好了。
参考:相关但不同的帖子:
例子:
import pandas as pd
df = pd.DataFrame({'a': ['A', 'A', 'C', 'B'],
'b': ['B', 'D', 'B', 'B'],
'c': ['C', 'C', 'C', 'A'],
'd': ['D', 'D', 'B', 'A']},
index=[0, 1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
这创造了这个df:
| 一种 | 乙 | C | d | |
|---|---|---|---|---|
| 0 | 一种 | 乙 | C | D |
| 1 | 一种 | D | C | D |
| 2 … |
我试图减少python dict的内存消耗,在我的情况下,它作为word-->document_id"倒排索引".每个word都作为整数进行哈希处理,占用24个字节.
我想知道我是否可以将每个元素dict的值和每个键转换dict为一个bitarray.我注意到任何遇到的最大值int都小于2^22,所以我可以只分配一个"22号"的位数组.
如何才能做到这一点?到目前为止,我已经看过gmpy2和bitarray库,以及std::bitsetC++ stdlib,我可以使用Cython.我从这篇文章中读到的bitarray并不是那么快gmpy.在gmpy,我不知道如何设置大小.最后,我想知道Python中的内存开销gmpy或bitarray对象是否值得,当我可以使用时std::bitset,它可能使用最少的内存.