22

I'm trying to drop pandas dataframe row based on its index (not location).

The data frame looks like

                      DO  
129518  a developer and   
20066   responsible for   
571     responsible for   
85629   responsible for   
5956    by helping them   

(FYI: "DO" is a column name)

I want to delete the row where its index is 571 so I did:

df=df.drop(df.index[571])

then I check df.ix[571]

then what the hell it's still there!

So I thought "ok, maybe index and ix are different!"

In [539]: df.index[571]
17002

My question is

1) What is index? (compared to ix)

2) How do I delete the index row 571 using ix?

aerin
  • 20,607
  • 28
  • 102
  • 140

2 Answers2

40

You should drop the desired value from the index directly:

df.drop(571, inplace=True)
Hooked
  • 84,485
  • 43
  • 192
  • 261
John Zwinck
  • 239,568
  • 38
  • 324
  • 436
7
df.index

Is the index of the dataframe.

df.index[571]

Is the 571st element of the index. Then you dropped whatever that was. You didn't want positional but that's what you did.

Use @John Zwinck's answer

piRSquared
  • 285,575
  • 57
  • 475
  • 624