Cserélje ismétlődő számot NAN értékeknek, kivéve az elsőt pandák oszlop

szavazat
0

Van egy adat keret, mint ez,

df
col1    col2
  1       A
  2       A
  3       B
  4       C
  5       C
  6       C
  7       B
  8       B
  9       A

Most már látjuk, hogy van folyamatos előfordulása az A, B és C. szeretnék csak a sorok, ahol az esemény kezdődik. És a többi érték az azonos előfordulási lesz nan.

A végleges adatok keret keresem fog kinézni,

df
col1    col2
  1       A
  2       NA
  3       B
  4       C
  5       NA
  6       NA
  7       B
  8       NA
  9       A

Meg tudom csinálni a hurok, és összehasonlítja, de a végrehajtás ideje lesz. I am looking for pythonic utat megtenni. Néhány panda hivatkozások lehetnek.

A kérdést 24/10/2019 12:59
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Összehasonlítás Series.shifted értékek és a hiányzó értékek Series.wherevagy numpy.where:

df['col2'] = df['col2'].where(df['col2'].ne(df['col2'].shift()))
#alternative
#df['col2'] = np.where(df['col2'].ne(df['col2'].shift()), df['col2'], np.nan)

Vagy DataFrame.locinverz állapot szerint ~:

df.loc[~df['col2'].ne(df['col2'].shift()), 'col2'] = np.nan

print (df)
   col1 col2
0     1    A
1     2  NaN
2     3    B
3     4    C
4     5  NaN
5     6  NaN
6     7    B
7     8  NaN
8     9    A

Részletes :

print (df['col2'].ne(df['col2'].shift()))
0     True
1    False
2     True
3     True
4    False
5    False
6     True
7    False
8     True
Name: col2, dtype: bool
Válaszolt 24/10/2019 13:01
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more