python'da ben 1 harfi kaldırmak gerekir

oy
-1

Ben aşağıdaki gibi büyük bir dataframe vardır:

DF1 (örnek veri)

a      name       keywords
1      ramesh     rrahul,rapple
2      venkat     rtemple
3      rajesh     rcake,rphone,rmaths
4      lamda      rcon
5      feast      rcamera,rtab

Ben mektubu kaldırmak istiyor roluşur her kelimenin başında virgülle ayrılmış kelimeden oluşan dizeleri. Çıktı aşağıdaki gibi olmalıdır:

a      name       keywords
1      ramesh     rahul,apple
2      venkat     temple
3      rajesh     cake,phone,maths
4      lamda      con
5      feast      camera,tab
Oluştur 08/11/2018 saat 11:31
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
6

İle iç içe liste anlama kullanın joinve split:

Uyarı :

Hiçbir null / NaN'ler değerleri varsayarsak.

df['keywords'] = [','.join(y[1:] for y in x.split(',')) for x in df['keywords']]
print (df)
   a    name          keywords
0  1  ramesh       rahul,apple
1  2  venkat            temple
2  3  rajesh  cake,phone,maths
3  4   lamda               con
4  5   feast        camera,tab

Bazen ilk harfi bulunmayan Mümkünse rbiraz değişiklik çözüm ile mümkündür if-else:

print (df)
   a    name             keywords
0  1  ramesh            aa,rapple
1  2  venkat              rtemple
2  3  rajesh  rcake,rphone,rmaths
3  4   lamda                 rcon
4  5   feast         rcamera,rtab

df['keywords'] = [','.join(y[1:] if y[0] == 'r' 
                                 else y 
                                 for y in x.split(',')) for x in df['keywords']]
print (df)
   a    name          keywords
0  1  ramesh          aa,apple
1  2  venkat            temple
2  3  rajesh  cake,phone,maths
3  4   lamda               con
4  5   feast        camera,tab
Cevap 08/11/2018 saat 11:35
kaynak kullanıcı

oy
3

Kullanım str.replaceile regexolduğu gibi desen:

import re
pat = re.compile(r'^r|(?<=,)[r]')
df['keywords'] = df.keywords.str.replace(pat,'')

Veya:

df['keywords'] = df.keywords.str.replace(r'^r|(?<=,)[r]','')

print(df)
   a    name          keywords
0  1  ramesh       rahul,apple
1  2  venkat            temple
2  3  rajesh  cake,phone,maths
3  4   lamda               con
4  5   feast        camera,tab

regex için açıklama:

  1. ^rolup olmadığını kontrol eder rdizenin başında.
  2. (?<=,)[r]olup olmadığını kontrol rher sonra,

Liste anlama yöntemi ile jezraeldaha hızlı olduğu str.replacenull varsa / NaN değerler ise str.replacedışarı acele olanlar bakabilir.

Cevap 08/11/2018 saat 11:57
kaynak kullanıcı

oy
1
df["keywords"] = df["keywords"].apply(lambda x: ",".join([w[1:] if w[0] == "r" else w for w in x.split(",")]) )
df

a   name    keywords
1   ramesh  rahul,apple
2   venkat  temple
3   rajesh  cake,phone,maths
4   lamda   con
5   feast   camera,tab
Cevap 08/11/2018 saat 12:00
kaynak kullanıcı

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