【问题标题】:Deleting rows in Pandas DataFrame based on values, from a specific range columns根据特定范围列中的值删除 Pandas DataFrame 中的行
【发布时间】:2018-04-28 04:31:50
【问题描述】:

我觉得有人问过这个问题,但我找不到确切的答案。

我有一个包含几十列的大型数据集。当任何列中的值大于 5 时,我试图从数据集中删除行,但我不想搜索前两列(前两列的值可以大于 5)。我知道可以命名特定列,例如(df.colname > 5),但是如何为一系列列命名?

像这样:

df = df[df.columns[2:34] > 5]

【问题讨论】:

    标签: python pandas numpy slice


    【解决方案1】:

    通过使用来自pandas.any 和来自Brad 的数据框

    df[~(df.iloc[:,2:]>5).any(1)]
    Out[403]: 
         a    b    c    d    e
    0  0.0  0.0  0.0  0.0  0.0
    2  0.0  0.0  0.0  0.0  0.0
    3  0.0  0.0  0.0  0.0  0.0
    

    【讨论】:

    • 感谢您的回复,但这只是返回空:0 行 × 34 列
    • @TajG 当任何列中的值大于 5 时,我试图从数据集中删除行
    • 数据中几乎所有的值都低于 5。我正在尝试删除值高于 5 的行。您的解决方案返回一个空集。它应该只删除几行,而不是整个集合。几乎所有数据都低于 5。
    • @TajG 请检查您的“真实”数据,我无法提供解决方案。我认为应该有一些列包含超过 5 的值
    • 好的,我想通了,问题是某些列 dtypes 是“对象”而不是数字,感谢您的帮助
    猜你喜欢
    • 2013-08-12
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 2016-11-01
    • 2016-05-05
    • 2017-02-16
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多