2017-11-08 1 views
1

Ich möchte den doppelten Zeilenwert aus einer bestimmten Spalte entfernen - in diesem Fall ist der Spaltenname "Nummer".Pandas fallen doppelten Zeilenwert aus einer bestimmten Spalte

Vorher:

 number qty status 
    0 10  2 go 
    1 10  5 nogo 
    2 4  6 yes 
    3 3  1 no 
    4 2  7 go 
    5 5  2 nah 
    6 5  6 go 
    7 5  3 nogo 
    8 1  10 yes 
    9 1  10 go 
    10 5  2 nah 

Nach:

 number qty status 
    0 10  2 go 
       5 nogo 
    1 4  6 yes 
    2 3  1 no 
    3 2  7 go 
    4 5  2 nah 
       6 go 
       3 nogo 
    5 1  10 yes 
       10 go 
    6 5  2 nah 
+0

Wenn Sie sagen, "drop" Sie bedeuten "NaN machen"? –

Antwort

0

Es ist möglich, Werte zu leeren String zu ersetzen oder NaNs durch mask mit duplicated durch neue Serie a durch den Vergleich Spalte mit shift ed Spalte erstellt mit cumsum :

a = df['number'].ne(df['number'].shift()).cumsum() 
#for replace '' 
df['number'] = df['number'].mask(a.duplicated(), '') 
#for replace NaNs 
#df['number'] = df['number'].mask(a.duplicated()) 
print (df) 
    number qty status 
0  10 2  go 
1   5 nogo 
2  4 6 yes 
3  3 1  no 
4  2 7  go 
5  5 2 nah 
6   6  go 
7   3 nogo 
8  1 10 yes 
9   10  go 
10  5 2 nah 

Detail:

a = df['number'].ne(df['number'].shift()).cumsum() 
print (a) 
0  1 
1  1 
2  2 
3  3 
4  4 
5  5 
6  5 
7  5 
8  6 
9  6 
10 7 
Name: number, dtype: int32 
Verwandte Themen