代码之家  ›  专栏  ›  技术社区  ›  nilsinelabore

如何在pandas中按特定行名/值删除行

  •  0
  • nilsinelabore  · 技术社区  · 5 年前

    如何删除行 Name == 30 是吗?

    不如同时删除两行 名称==30 Name == 40 是吗?

    Name     Date    sales   discount  net_sales 
    
    20     20060331   2.709       NaN      2.709 
    30     20060630   6.590       NaN      6.590
    40     20060930  10.103       NaN     10.103 
    50     20061231  15.915       NaN     15.915 
    

    谢谢您。

    3 回复  |  直到 5 年前
        1
  •  0
  •   ansev    5 年前

    使用 Series.ne

    df[df['Name'].ne(30)]
    

    或者如果30是 str

    df[df['Name'].ne('30')]
    

    输出:

       Name      Date   sales  discount  net_sales
    0    20  20060331   2.709       NaN      2.709
    2    40  20060930  10.103       NaN     10.103
    3    50  20061231  15.915       NaN     15.915
    

    若要放置超过1个,则需要使用 Series.isin 以下内容:

    df[~df['Name'].isin([20,30])]
    

       Name      Date   sales  discount  net_sales
    2    40  20060930  10.103       NaN     10.103
    3    50  20061231  15.915       NaN     15.915
    

    用于删除列5:

    df.loc[:,~df.columns.isin([5])]
    

    df.loc[:,df.columns != 5]
    
        2
  •  0
  •   moys    5 年前

    你可以用

    df.drop(df[df.Name.eq(30)].index)
    

    df[~df.Name.eq(30)]
    
        3
  •  0
  •   Dev Khadka    5 年前

    可以使用filterd行的索引,如下所示

    df.drop(df[df["Name"]==30].index, inplace=True)
    df