Untitled

 avatar
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