2015-03-05 14 views
6

Chciałbym usunąć bieżący wiersz podczas iteracji - using df.iterrows(), jeśli jego pewna kolumna zawodzi w moim stanie if.Jak usunąć bieżący wiersz w ramce danych pandy podczas df.iterrows()

np.

To może być bardzo łatwe, ale wciąż nie mogę wymyślić, jak to zrobić. Twoja pomoc będzie bardzo ceniona!

+0

jest ten kod pseudo czy to naprawdę to, co staramy się osiągnąć? czy chcesz po prostu upuścić wszystkie wiersze, które == 0? – EdChum

+0

pseudo kod sir. Chcę usunąć/upuścić wiersz, gdy zostanie znaleziony w innym df, które mam. Mam dwa df posiadające pewne kolumny zawierające podobne wartości, ale z różnych nagłówków col. – JCm

Odpowiedz

10

Nie wiem, czy to jest pseudo kod lub nie, ale nie można usunąć wiersz tak, można go drop:

In [425]: 

df = pd.DataFrame({'a':np.random.randn(5), 'b':np.random.randn(5)}) 
df 
Out[425]: 
      a   b 
0 -1.348112 0.583603 
1 0.174836 1.211774 
2 -2.054173 0.148201 
3 -0.589193 -0.369813 
4 -1.156423 -0.967516 
In [426]: 

for index, row in df.iterrows(): 
    if row['a'] > 0: 
     df.drop(index, inplace=True) 
In [427]: 

df 
Out[427]: 
      a   b 
0 -1.348112 0.583603 
2 -2.054173 0.148201 
3 -0.589193 -0.369813 
4 -1.156423 -0.967516 

jeśli po prostu chcesz filtrować te wiersze się można wykonać logiczną indeksowania:

df[df['a'] <=0] 

by osiągnąć to samo

Powiązane problemy