<p>可以使用以下事实:空字符串对应于False,非空字符串对应于True。因此,将字符串dataframe转换为bool将给出一个true和false的数据帧。将此重铸为int会将true转换为1,将false转换为0,然后只需跨行应用联接操作:</p>
<pre><code>df['binary'] = df.astype(bool).astype(int).apply(
lambda row: ''.join(str(i) for i in row), axis=1)
print(df)
</code></pre>
<p>结果:</p>
<pre><code> A B C D E binary
0 asfe hrd 10100
1 eseg bdb jyf 11100
2 eesg htsdg sef hdts 11110
3 4dsf hdsr afse 10110
4 rdshg nfd jftd 01011
5 hdt th 11000
6 gase tjf htf 11010
7 gex 10000
8 gsges hdts jfdt 10101
9 hhbr aseg 10100
</code></pre>
<p>编辑:刚刚实现另一个用户发布了基本相同的东西(也修复了复制错误)</p>
<p>下面是使用生成器的另一种方法:</p>
<pre><code>def iterable_to_binary_mask(iterable):
bools = (bool(i) for i in iterable)
ints = (int(i) for i in bools)
strs = (str(i) for i in ints)
return ''.join(strs)
df['binary'] = df.apply(iterable_to_binary_mask, axis=1)
</code></pre>
<p>这比我的机器上的类型转换方法慢大约3倍,但是应该使用
最小内存。你知道吗</p>