python - 如何找到三列中的数字超过熊猫中其他列值的一半
问题描述
X、Y 和 Z 三列具有随机值。
X、Y 和 Z 值不应小于彼此值的一半。
在数学逻辑方面需要帮助
X Y Z
5461 919 8269
5400 5000 7000 <---
4000 1 35
输出应该是 5400 5000 7000。在第一行,Y 小于 X 和 Z 的一半。在第三行,Y 和 Z 都小于 X 的一半。
解决方案
逻辑很简单:只要检查每个值是否小于其他两个值的一半。使用 apply 返回True
或False
然后使用获得的boolean
值过滤行。
import pandas as pd
a = pd.DataFrame([[
5461 , 919 ,8269],
[5400 , 5000, 7000],
[4000 , 1 , 35]], columns = ['X','Y','Z'])
print(a)
def less(a,b,c):
if a<b/2 or a<c/2:
return True
def cond(a,b,c):
if less(a,b,c) or less(b,a,c) or less(c,a,b):
return False
return True
a[a.apply(lambda x: cond(x['X'],x['Y'],x['Z']), axis=1)]
输出
X Y Z
1 5400 5000 7000
推荐阅读
- opencv - 如何在 OpenCV 中实现类似 Photoshop 的效果 OilPaint 效果?
- python - 脸书情绪分析
- ios - 如何转换数组数组的元组<(键:字符串,值:数组
)> 到数组字典字典 >? - cordova - 具有电容器和 Cordova 的 Ionic 应用程序
- python - Python 游戏总是崩溃或卡住 | 游戏
- ubuntu - 临时端口上大量阻塞的传入请求
- c# - 在 C# 中是否有一种更高效的方式来清除文本框?
- c++ - 如何从整个磁盘中排除要挂载的一个文件
- rust - 使用 Rust 语言编译问题:从“Hello World”开始
- python - 测量用 Scrapy 构建的蜘蛛的解析时间