将数字转换为二进制并使用python存储在pandas中的多个列中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将数字转换为二进制并使用python存储在pandas中的多个列中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1416字,纯文字阅读大概需要3分钟。
内容图文
![将数字转换为二进制并使用python存储在pandas中的多个列中](/upload/InfoBanner/zyjiaocheng/729/1644dd5749694fcf8280e487eb8a003d.jpg)
我想使用Python将数字转换为二进制并存储在Pandas中的多个列中.
这是一个例子.
df = pd.DataFrame([['a', 1], ['b', 2], ['c', 0]], columns=["Col_A", "Col_B"])
for i in range(0,len(df)):
df.loc[i,'Col_C'],df.loc[i,'Col_D'] = list( (bin(df.loc[i,'Col_B']).zfill(2) ) )
我正在尝试转换二进制文件并将其存储在dataframe中的多个列中.将数字转换为二进制后,输出必须包含2位数.它工作正常.
问题:如果我的数据集包含数千条记录,我可以看到性能差异.如果我想提高上述代码的性能,我们该怎么做?
我尝试使用以下单行代码,这对我不起作用.
df[['Col_C','Col_D']] = list( (bin(df['Col_B']).zfill(2) ) )
解决方法:
如果性能很重要,请使用numpy和this solution:
d = df['Col_B'].values
m = 2
df[['Col_C','Col_D']] = pd.DataFrame((((d[:,None] & (1 << np.arange(m)))) > 0).astype(int))
print (df)
Col_A Col_B Col_C Col_D
0 a 1 1 0
1 b 2 0 1
2 c 0 0 0
性能(快约1000倍):
df = pd.DataFrame([['a', 1], ['b', 2], ['c', 0]], columns=["Col_A", "Col_B"])
df = pd.concat([df] * 1000, ignore_index=True)
In [162]: %%timeit
...: df[['Col_C','Col_D']] = df['Col_B'].apply(lambda x: pd.Series(list(bin(x)[2:].zfill(2))))
...:
609 ms ± 14.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [163]: %%timeit
...: d = df['Col_B'].values
...: m = 2
...: df[['Col_C','Col_D']] = pd.DataFrame((((d[:,None] & (1 << np.arange(m)))) > 0).astype(int))
...:
618 μs ± 26.2 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
内容总结
以上是互联网集市为您收集整理的将数字转换为二进制并使用python存储在pandas中的多个列中全部内容,希望文章能够帮你解决将数字转换为二进制并使用python存储在pandas中的多个列中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。