python-基于值的熊猫中的虚拟变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-基于值的熊猫中的虚拟变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1711字,纯文字阅读大概需要3分钟。
内容图文
![python-基于值的熊猫中的虚拟变量](/upload/InfoBanner/zyjiaocheng/665/26f898c4b3444b2c8026f5784423b3ad.jpg)
我想在pandas中创建一个虚拟变量,如果A列中的值大于0,则其值为1,否则为0.该虚拟对象应存储在新列G中.
A B C D E F
2016-01-01 0.571650 0.427669 0.090381 -0.765132 -1.164994 0.244477
2016-01-02 0.834616 0.938302 -0.428445 -0.067147 0.126845 0.783122
2016-01-03 1.996946 -0.178791 1.478010 0.424868 2.311478 -0.357036
2016-01-04 0.423200 0.229080 1.414170 0.258490 0.931763 0.096947
2016-01-05 -0.400117 -0.785149 1.748607 1.777462 -0.509319 0.314151
目前,我有这个
a = []
for row in df['A']:
if row > 0:
a.append(1)
else:
a.append(0)
df['G'] = a
这行得通,但是我有直觉,必须有一种更好,更简单的方法来做到这一点?
解决方法:
比较整个列并使用astype强制转换dtype:
In [21]:
df['G'] = (df['A'] > 0).astype(int)
df
Out[21]:
A B C D E F G
2016-01-01 0.571650 0.427669 0.090381 -0.765132 -1.164994 0.244477 1
2016-01-02 0.834616 0.938302 -0.428445 -0.067147 0.126845 0.783122 1
2016-01-03 1.996946 -0.178791 1.478010 0.424868 2.311478 -0.357036 1
2016-01-04 0.423200 0.229080 1.414170 0.258490 0.931763 0.096947 1
2016-01-05 -0.400117 -0.785149 1.748607 1.777462 -0.509319 0.314151 0
比较生成带有dtype bool的布尔系列:
In [22]:
df['A'] > 0
Out[22]:
2016-01-01 True
2016-01-02 True
2016-01-03 True
2016-01-04 True
2016-01-05 False
Name: A, dtype: bool
因此,将类型转换为int会将True转换为1,将False转换为0
对于50k df:
In [36]:
%%timeit
a=[]
for row in df['A']:
if row > 0:
a.append(1)
else:
a.append(0)
100 loops, best of 3: 15.1 ms per loop
In [37]:
%timeit df['G'] = (df['A'] > 0).astype(int)
1000 loops, best of 3: 423 μs per loop
因此,向量化版本的速度快了约35倍,并且在更大的dfs下可以更好地扩展
内容总结
以上是互联网集市为您收集整理的python-基于值的熊猫中的虚拟变量全部内容,希望文章能够帮你解决python-基于值的熊猫中的虚拟变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。