选择至少x列高于平均值的行

时间:2019-07-26 12:18:44

标签: python pandas

我有一个看起来像这样的数据框(但将来可能会有更多的列):

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,那么这种方法将无法避免灾难性的复杂性逻辑。

有没有相对简单的方法来做到这一点,或者这真的像我担心的那样困难吗?谢谢。

1 个答案:

答案 0 :(得分:1)

尝试一下:

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