Untitled
unknown
python
a year ago
1.8 kB
8
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