panda sütununda, ilk dışında NAN değerleri ile tekrar sayısı yerine

oy
0

Ben, bu gibi bir veri çerçevesi vardır

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

Şimdi ben oluşumu başlıyor satırları istediğiniz A, B ve C sürekli oluşum olduğunu görebiliriz. Ve aynı oluşum diğer değerler nan olacaktır.

Ben benzeyecek arıyorum nihai veri çerçevesi,

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

Ben döngü ve karşılaştırmak için kullanarak bunu yapabilirsiniz, Ama yürütme zamanı daha olacak. Bunu yapmak pythonic yol arıyorum. Bazı panda kısayolları olabilir.

Oluştur 24/10/2019 saat 12:59
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Karşılaştırma ölçütü Series.shifted değerleri ve eksik değerlerle Series.whereveya 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)

Ya göre DataFrame.locters durumdan ile ~:

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

Detay :

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
Cevap 24/10/2019 saat 13:01
kaynak kullanıcı

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