2014-11-14 4 views
19

Я думаю, что это должно быть просто, но я попробовал несколько идей, и ни один из них не работал:Как удалить последнюю строку данных в панд dataframe

last_row = len(DF) 
DF = DF.drop(DF.index[last_row]) #<-- fail! 

Я попытался использовать отрицательные индексы, но это также может привести к ошибкам. Я все еще должен недопонимать что-то основное.

Заранее спасибо.

+6

'DF = DF [: - 1]'? – U2EF1

ответ

29

Поскольку позиционирование индекса в Python основано на 0, на самом деле не будет элемента в index в месте, соответствующем len(DF). Вам нужно, что быть last_row = len(DF) - 1:

In [49]: dfrm 
Out[49]: 
      A   B   C 
0 0.120064 0.785538 0.465853 
1 0.431655 0.436866 0.640136 
2 0.445904 0.311565 0.934073 
3 0.981609 0.695210 0.911697 
4 0.008632 0.629269 0.226454 
5 0.577577 0.467475 0.510031 
6 0.580909 0.232846 0.271254 
7 0.696596 0.362825 0.556433 
8 0.738912 0.932779 0.029723 
9 0.834706 0.002989 0.333436 

[10 rows x 3 columns] 

In [50]: dfrm.drop(dfrm.index[len(dfrm)-1]) 
Out[50]: 
      A   B   C 
0 0.120064 0.785538 0.465853 
1 0.431655 0.436866 0.640136 
2 0.445904 0.311565 0.934073 
3 0.981609 0.695210 0.911697 
4 0.008632 0.629269 0.226454 
5 0.577577 0.467475 0.510031 
6 0.580909 0.232846 0.271254 
7 0.696596 0.362825 0.556433 
8 0.738912 0.932779 0.029723 

[9 rows x 3 columns] 

Однако, это намного проще просто написать DF[:-1].

+0

ugh, я чувствую себя глупо! Благодарю. –

+1

Обратите внимание, что при отбрасывании с использованием dfrm.index индекс последней строки должен быть уникальным, иначе все строки с этим индексом будут удалены. – FranciscoD

17

Чтобы удалить последние п строк:

df.drop(df.tail(n).index,inplace=True) # drop last n rows 

К тому же духе, вы можете оставить первые п строк:

df.drop(df.head(n).index,inplace=True) # drop first n rows 
+0

Отличное решение ... даже для MultiIndex. –

3
DF[:-n] 

где п последнее число строк падать.

Чтобы удалить последнюю строку:

DF = DF[:-1] 
Смежные вопросы