Untitled
unknown
python
6 months ago
1.8 kB
5
Indexable
import re # Gereksiz karakterleri ve boşlukları temizlemek için bir fonksiyon def temizle_boyut(boyut): if isinstance(boyut, str): # Eğer boyut bir string ise işlemleri yap # cm, CN, \n, \xa0 gibi gereksiz karakterleri temizle boyut = boyut.replace('cm', '').replace('CN', '').replace('\n', '').replace('\xa0', '').strip() return boyut return None # Eğer float ya da NaN ise None döndür # En ve boy değerlerini ayıracak fonksiyon def ayir_en_boy(boyut): # Veriyi temizle boyut = temizle_boyut(boyut) if boyut: # Formatlar arasında x, *, -, veya whitespace gibi çeşitli ayrıcılar var, onları hesaba katan regex pattern = re.match(r'(\d+[\.,]?\d*)\s*[xX\*]\s*(\d+[\.,]?\d*)', boyut) if pattern: en = float(pattern.group(1).replace(',', '.')) # Virgül varsa noktaya çevir boy = float(pattern.group(2).replace(',', '.')) return pd.Series([en, boy]) return pd.Series([None, None]) # Düzgün bir boyut yoksa None döndür # Her satır için ayir_en_boy fonksiyonunu uygula df[['en', 'boy']] = df['kitap_boyutu'].apply(ayir_en_boy) # "en" sütununda NaN olan satırları sil df = df[df['en'].notna()] # "boy" sütununda NaN olan satırları sil df = df[df['boy'].notna()] def duzelt_en_degeri(deger): if deger >= 100: # Eğer değer 100'den büyük veya eşitse return deger / 10 # Değeri 10'a bölerek iki basamağa düşür return deger # Eğer zaten iki basamaklıysa olduğu gibi bırak # "en" ve "boy" sütunundaki üç basamaklı sayıları düzenle df['en'] = df['en'].apply(duzelt_en_degeri) df['boy'] = df['boy'].apply(duzelt_en_degeri) # Düzenlenmiş DataFrame'i yazdır print(df)
Editor is loading...
Leave a Comment