如何将1和0的行转换为新的int列

  • 本文关键字:转换 int pandas string binary
  • 更新时间 :
  • 英文 :


我有一个包含30-40列的pandas数据框架,其中包含1或0。如何获得一个新的列与int等于对应字符串的二进制数?例如,第一行应该给出

int('10101',2)
>>> 21
<表类>——f22f43f242f243f244tbody><<tr>1010110100000011010100001

我们可以在数学上做到这一点,通过基于DataFrame的宽度创建一系列2的幂。然后mulsum跨行:

s = pd.Series(reversed([2 ** i for i in range(df.columns.size)]),
index=df.columns)
df['result'] = df.mul(s, axis=1).sum(axis=1)

df:

f22  f43  f242  f243  f244  result
0    1    0     1     0     1      21
1    1    0     1     0     0      20
2    0    0     0     0     1       1
3    1    0     1     0     1      21
4    0    0     0     0     1       1

s参考:

f22     16
f43      8
f242     4
f243     2
f244     1
dtype: int64

Setup and imports:

import pandas as pd
df = pd.DataFrame({
'f22': [1, 1, 0, 1, 0],
'f43': [0, 0, 0, 0, 0],
'f242': [1, 1, 0, 1, 0],
'f243': [0, 0, 0, 0, 0],
'f244': [1, 0, 1, 1, 1]
})

相关内容

  • 没有找到相关文章

最新更新