python - 选择至少 x 列高于平均水平的行
问题描述
我有一个看起来像这样的数据框(但将来可能会有更多列):
Serial No 2015 2016 2017 2018
1 20 30 25 35
2 22 35 47 30
我希望选择 4 列中至少 3 列中的值高于该列平均值的行。我将非常感谢一个更灵活的答案,例如可以轻松编辑以使其成为 4 列中的 2 列或 6 列中的 4 列,或者可能高于平均水平至少 5%
如果我想要所有的列,我可以简单地写一些类似的东西df.2015>df.2015.mean() & df.2016>df.2016.mean()
,但是如果我想在 y 列中至少看到 x 列,那么如果没有灾难性的复杂逻辑,这种方法就行不通。
有没有相对简单的方法可以做到这一点,或者这真的像我担心的那样困难吗?谢谢你。
解决方案
尝试这个:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.random(size=(10, 3)), columns=['a', 'b', 'c'])
df[np.sum(df > df.mean(), axis=1) > 2] # 2 is the argument that
# defines the number of values that
# should be above the mean
推荐阅读
- c# - Xamarin iOS:如何在 VS 2019 for Windows 中找到创建通知服务扩展的模板?
- javascript - 如何使用 JavaScript 将列表项添加到现有列表
- node.js - TypeScript 节点服务器与 Web 组装服务器
- python - 向导库存:与库存混淆以及如何使用我拥有的代码更改值
- spring-boot - 在使用 Springboot 运行集成测试时启动嵌入式 gRPC 服务器
- codeigniter - Codeigniter:如何从视图打印数组数组到模型
- spring - JUnit/Mockito:ArgumentCaptor 在 JUnit 测试执行之前运行?
- html - 混合混合模式:差异不适用于 Chrome
- javascript - 使用 JavaFX 加载谷歌地图 html
- python-3.x - sqlite 值不会更新