python-Pandas DataFrame使用where()将列与阈值列进行比较
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Pandas DataFrame使用where()将列与阈值列进行比较,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1609字,纯文字阅读大概需要3分钟。
内容图文
![python-Pandas DataFrame使用where()将列与阈值列进行比较](/upload/InfoBanner/zyjiaocheng/661/385d4504dbe84a15bafebc729ac06f9e.jpg)
我需要在几列中将它们的绝对值小于阈值列中的对应值的值为空
import pandas as pd
import numpy as np
df=pd.DataFrame({'key1': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'key2': [2000, 2001, 2002, 2001, 2002],
'data1': np.random.randn(5),
'data2': np.random.randn(5),
'threshold': [0.5,0.4,0.6,0.1,0.2]}).set_index(['key1','key2'])
data1 data2 threshold
key1 key2
Ohio 2000 0.201240 0.083833 0.5
2001 -1.993489 -1.081208 0.4
2002 0.759038 -1.688769 0.6
Nevada 2001 -0.543916 1.412679 0.1
2002 -1.545781 0.181224 0.2
这给我一个错误“无法在没有指定级别且没有重叠名称的情况下加入”
df.where(df.abs()> df [‘threshold’])
这有效,但显然针对标量
df.where(df.abs()> 0.5)
data1 data2 threshold
key1 key2
Ohio 2000 NaN NaN NaN
2001 -1.993489 -1.081208 NaN
2002 0.759038 -1.688769 NaN
Nevada 2001 -0.543916 1.412679 NaN
2002 -1.545781 NaN NaN
顺便说一句,这似乎确实给了我一个不错的结果-仍然想了解如何使用where()方法
df.apply(lambda x:x.where(x.abs()>x['threshold']),axis=1)
解决方法:
这是使用DataFrame.gt(大于)方法的稍微不同的选项.
df[df.abs().gt(df['threshold'], axis='rows')]
Out[16]:
# Output might not look the same because of different random numbers,
# use np.random.seed() for reproducible random number gen
Out[13]:
data1 data2 threshold
key1 key2
Ohio 2000 NaN NaN NaN
2001 1.954543 1.372174 NaN
2002 NaN NaN NaN
Nevada 2001 0.275814 0.854617 NaN
2002 NaN 0.204993 NaN
内容总结
以上是互联网集市为您收集整理的python-Pandas DataFrame使用where()将列与阈值列进行比较全部内容,希望文章能够帮你解决python-Pandas DataFrame使用where()将列与阈值列进行比较所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。