擅长:python、mysql、java
<p>不知道为什么列名与您引用的Microsoft文档不同。但是假设您可以根据文档重命名列,那么可以使用numpy<code>bitwise_and</code></p>
<pre><code>df = pd.read_csv('data2.csv')
flags = {
'SCRIPT' : 0x0001,
'ACCOUNTDISABLE' : 0x0002,
'HOMEDIR_REQUIRED' : 0x0008,
'LOCKOUT' : 0x0010,
'PASSWD_NOTREQD' : 0x0020,
#.... (add more flags here as required, I just copy-pasted from the docs)
}
for (f, mask) in flags.items():
df[f] = np.bitwise_and(df['column3'], mask) / mask
print(df)
</code></pre>
<p>这将输出:</p>
<pre><code> column1 column2 column3 SCRIPT ACCOUNTDISABLE HOMEDIR_REQUIRED LOCKOUT PASSWD_NOTREQD
0 tom 100 544 0.0 0.0 0.0 0.0 1.0
1 tim 101 514 0.0 1.0 0.0 0.0 0.0
2 ben 899 1512 0.0 0.0 1.0 0.0 1.0
</code></pre>
<p>顺便说一下,使用位掩码检查作为十六进制数串在一起的标志是一种非常常见的模式。你知道吗</p>