【问题标题】:Excluding columns from a dataframe based on their mean without using a loop根据平均值从数据框中排除列而不使用循环
【发布时间】:2016-02-24 09:19:34
【问题描述】:

我有一个 pandas 数据框 df,我想删除平均值大于 10 且小于 2 的列。如何在没有循环的情况下做到这一点?

我试过这个没有循环

df=df.drop(df.mean(axis=1)>10 and df.mean(axis=1)<2)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你不能使用drop,但是你可以索引……你还需要使用&amp;而不是and

    m = df.mean(axis=1)  # calculate once
    df = df.loc[:, (m>10) & (m<2)]
    

    【讨论】:

    • 您的答案是正确的,但我认为,axis=0 因为我想删除列。再次感谢
    • 实际上,当我将其应用于某些条目为 nan 且某些条目长度不等的数据帧时,出现此错误:提供了无法对齐的布尔系列键
    • @user3841581 你试过df = df.loc[:, (m&gt;10) &amp; (m&lt;2)]。我认为您对轴的看法是正确的,我只是使用了您的 .mean 方法而没有阅读它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2020-05-15
    • 2017-11-07
    相关资源
    最近更新 更多