nilsinelabore
nilsinelabore

Reputation: 5135

How to drop a row by specific row name/value in pandas

How to drop the row Name == 30?

How about dropping 2 rows at the same time, say Name == 30 and 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 

Thank you.

Upvotes: 0

Views: 211

Answers (3)

ansev
ansev

Reputation: 30930

Use Series.ne

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

or if 30 is str

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

Output:

   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

To drop more than 1 you need to use 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

Use to drop column 5:

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

or

df.loc[:,df.columns != 5]

Upvotes: 0

Dev Khadka
Dev Khadka

Reputation: 5461

you can use index of filterd rows like below

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

Upvotes: 1

moys
moys

Reputation: 8033

You can use

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

or

df[~df.Name.eq(30)]

Upvotes: 0

Related Questions