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