【问题标题】:only keep rows with values greater than something只保留值大于某值的行
【发布时间】:2021-03-13 16:47:08
【问题描述】:

我想修改一个数据集,使其应检查“列”列的所有行。每行都有一个字符串值。我想丢弃字符串长度小于 3 的行。如果我想丢弃值为 9 的所有行,则此方法有效。

modifiedDf = modifiedDf[modifiedDf['Column'] != "9"]

但如果我将其更改为例如,

modifiedDf = modifiedDf[len(modifiedDf['Column']) > 3]

它只是给了我一个 keyError: true。

编辑:

是否可以只检查某些行的​​长度?例如,我有另一个 col Class。我想检查 Class 为“Marke”的所有行的“Col”。

基本上,我想保留剩余的行,并且仅当且仅当该行的 Class 值为 mark 时才过滤掉 Col 长度

mask = modifiedDf['Class'] == "Marke"

【问题讨论】:

    标签: python python-3.x pandas dataframe string-length


    【解决方案1】:

    您可以在索引器中使用两个条件:

    df = pd.DataFrame({'Column': ['aa', 'asdfdsf', 'bb', 'sdfdsss', 'aa', 'a'],
                       'Class': ['Marke']*4 + ['Other']*2},)
    
    
    df = df[~((df['Class']=='Marke') & (df['Column'].str.len() < 3))]
    

    【讨论】:

      【解决方案2】:

      len(modifiedDf['Column']) 等于len(modifiedDf),所以len(modifiedDf['Column']) &gt; 3 很可能是True,这会给您错误,因为modifiedDf[True] 尝试访问名为True 的列。

      我想你想要

      modifiedDf = modifiedDf[modifiedDf['Column'].str.len() > 3]
      

      【讨论】:

      • 这不涉及“类”过滤器。
      猜你喜欢
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多