• 09-01-2024, 13:42:16
    #1
    merhaba;
    bende bi excel dosyasında 24bin satırlık her satırda karışık araç modelleri var.
    A sütünunda bulunan bu modellerin karşılığı olan araç amarka/markalarını B sütununa yazmasını istiyorum ama bi türlü başaramadım.

    Denediğim kod:
    import pandas as pd
    
    # Excel dosyasını oku
    dosya_yolu = 'volkswagen_match.xlsx' # Excel dosyasının yolunu belirtin
    veri = pd.read_excel(dosya_yolu)
    
    # Araç modelleri ve markalarını belirle
    arac_modelleri = {
    # AUDI MARKALARI
    'A1': 'AUDI',
    'A2': 'AUDI',
    'A3': 'AUDI',
    'A4': 'AUDI',
    'A5': 'AUDI',
    'A6': 'AUDI',
    
    }
    
    for indeks, satir in veri.iterrows():
    model = satir['MODE'] # 'MODE' sütunundaki model değerini al
    
    eslesme_marka = []
    for arac_modeli, marka in arac_modelleri.items():
    if arac_modeli in model:
    eslesme_marka.append(marka)
    
    if len(eslesme_marka) > 1:
    veri.at[indeks, 'MARKA'] = '///'.join(set(eslesme_marka))
    elif eslesme_marka:
    veri.at[indeks, 'MARKA'] = eslesme_marka[0]
    
    # 'MARKA' sütununun veri tipini string olarak güncelle
    veri['MARKA'] = veri['MARKA'].astype(str)
    
    # Sonuçları Excel dosyasına kaydet
    try:
    veri.to_excel('volkswagen_match1.xlsx', index=False)
    print("Dosya başarıyla kaydedildi.")
    except Exception as e:
    print("Hata oluştu:", e)
    Aldığım hata:
    ValueError Traceback (most recent call last)
    <ipython-input-3-a95b76df5603> in <module>
    151 152 if len(eslesme_marka) > 1:
    --> 153 veri.at[indeks, 'MARKA'] = '///'.join(set(eslesme_marka))
    154 elif eslesme_marka:
    155 veri.at[indeks, 'MARKA'] = eslesme_marka[0]

    ~anaconda3libsite-packagespandascoreindexing.py in __setitem__(self, key, value)
    2089 return
    2090 -> 2091 return super().__setitem__(key, value)
    2092 2093
    ~anaconda3libsite-packagespandascoreindexing.py in __setitem__(self, key, value)
    2040 raise ValueError("Not enough indexers for scalar access (setting)!")
    2041 -> 2042 self.obj._set_value(*key, value=value, takeable=self._takeable)
    2043 2044
    ~anaconda3libsite-packagespandascoreframe.py in _set_value(self, index, col, value, takeable)
    3145 validate_numeric_casting(series.dtype, value)
    3146 -> 3147 series._values[loc] = value
    3148 # Note: trying to use series._set_value breaks tests in
    3149 # tests.frame.indexing.test_indexing and tests.indexing.test_partial

    ValueError: could not convert string to float: 'VOLKSWAGEN'

    BU DA EXCEL DOSYASINDA VAR OLAN VERİNİN ÖRNEĞİ
    CADDY///TRANSPORTER T5///GOLF5///POLOVOLKSWAGENGOLF7///A3///LEON///PASSAT///POLO///A1AUDI///VOLKSWAGENTRANSPORTER T4VOLKSWAGENPASSAT///A4///A6AUDI///VOLKSWAGENGOLF5///PASSAT///CADDY///JETTA///TRANSPORTER T5///TRANSPORTER T6///A3///LEON///CRAFTERAUDI///VOLKSWAGENGOLF2///GOLF3///PASSAT///CADDY///POLO CLASSICVOLKSWAGENA4///A6AUDI
    GOLF7///A3///PASSATAUDI///VOLKSWAGENGOLF4///BORA///A3///TOLEDO///SEPHIA///SHUMA///323AUDI///VOLKSWAGEN///KIA///MAZDA///SEAT
  • 09-01-2024, 14:33:08
    #2
    import pandas as pd
    
    # Excel dosyasını oku
    dosya_yolu = 'volkswagen_match.xlsx'  # Excel dosyasının yolunu belirtin
    veri = pd.read_excel(dosya_yolu)
    
    # Araç modelleri ve markalarını belirle
    arac_modelleri = {
        # Buraya araç modelleri ve markalarını ekleyin
    }
    
    for indeks, satir in veri.iterrows():
        model = satir['MODE']  # 'MODE' sütunundaki model değerini al
    
        eslesme_marka = []
        for arac_modeli, marka in arac_modelleri.items():
            if arac_modeli in model:
                eslesme_marka.append(marka)
    
        if len(eslesme_marka) > 1:
            veri.at[indeks, 'MARKA'] = '///'.join(set(eslesme_marka))
        elif eslesme_marka:
            veri.at[indeks, 'MARKA'] = eslesme_marka[0]
    
    # 'MARKA' sütununun veri tipini string olarak güncelle
    veri['MARKA'] = veri['MARKA'].astype(str)
    
    # Sonuçları Excel dosyasına kaydet
    try:
        veri.to_excel('volkswagen_match1.xlsx', index=False)
        print("Dosya başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", e)
  • 09-01-2024, 14:44:15
    #3
    shms adlı üyeden alıntı: mesajı görüntüle
    import pandas as pd
    
    # Excel dosyasını oku
    dosya_yolu = 'volkswagen_match.xlsx'  # Excel dosyasının yolunu belirtin
    veri = pd.read_excel(dosya_yolu)
    
    # Araç modelleri ve markalarını belirle
    arac_modelleri = {
        # Buraya araç modelleri ve markalarını ekleyin
    }
    
    for indeks, satir in veri.iterrows():
        model = satir['MODE']  # 'MODE' sütunundaki model değerini al
    
        eslesme_marka = []
        for arac_modeli, marka in arac_modelleri.items():
            if arac_modeli in model:
                eslesme_marka.append(marka)
    
        if len(eslesme_marka) > 1:
            veri.at[indeks, 'MARKA'] = '///'.join(set(eslesme_marka))
        elif eslesme_marka:
            veri.at[indeks, 'MARKA'] = eslesme_marka[0]
    
    # 'MARKA' sütununun veri tipini string olarak güncelle
    veri['MARKA'] = veri['MARKA'].astype(str)
    
    # Sonuçları Excel dosyasına kaydet
    try:
        veri.to_excel('volkswagen_match1.xlsx', index=False)
        print("Dosya başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", e)
    mÜKEMMELSİNİZ... Allah herdaim yar ve yardımcınız olsun...