Merhaba Arkadaşlar;
Yapmak İstediğim; İki Excel dosyasını karşılaştırılarak Ana_Tablodaki verileri güncellemek
Güncel_Kurum_Sayıları tablosunda olup, Ana_Tabloda yoksa olmayan kurumun Ana_tabloya eklenmesi ve Durumu başlığına Yeni Açılış (23.03.2024) olarak not eklenmesi,
Güncel_Kurum_Sayıları tablosunda olmayıp, Ana_tabloda var ise Ana_tablodan bunların silinmesi ve mesaj olarak 'silinen kurumun ilçesi ve okul adının (Örnek;‘Sarıca İlçesi-Sarıca İlkokulu Kapatılmıştır’) şeklinde bildirilmesi
import pandas as pd
dosya = pd.read_excel("Ana_Tablo.xlsx")
df_ana= pd.DataFrame(dosya)
dosya = pd.read_excel("Güncel_Kurum_Sayıları.xlsx")
df_kurum = pd.DataFrame(dosya)
df_kurum["KURUM_KODU"] != df_ana["KURUM_KODU"]
df_ana.dropna()
print(df_ana)
Merhaba,
Bir kaç fikir vererek gerisini sana bırakıyorum.
import pandas as pd
df_ana = pd.read_excel("Ana_Tablo.ods")
print(df_ana.head())
Çıktı:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1 56 56.0 RESMİ SALİHLİ İlkokul Hisar İlkokulu İLKOKUL 1 NaN
2 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
3 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
4 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.ods")
print(df_guncel.head())
Çıktı:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM _TÜRÜ KURUM_ADI SAYISI DURUMU
0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi 1 NaN
1 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi 1 NaN
2 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 1 NaN
3 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 1 NaN
4 72 71.0 RESMİ SALİHLİ İlkokul Narlıdere İlkokulu 1 NaN
df_ana["Kurum_Kod_Ad"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_ADI"]
df_ana = df_ana.set_index("Kurum_Kod_Ad")
df_guncel["Kurum_Kod_Ad"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_ADI"]
df_guncel = df_guncel.set_index("Kurum_Kod_Ad")
df_ana_indeks = df_ana.index
df_guncel_indeks = df_guncel.index
ekle = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
ekle.append(indeks)
print("Eklenecekler:", ekle)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
print("Silinecekler:", sil)
Ara Çıktı:
# df_ana.head():
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
56Hisar İlkokulu 56 56.0 RESMİ SALİHLİ İlkokul Hisar İlkokulu İLKOKUL 1 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
# df_guncel.head():
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM _TÜRÜ KURUM_ADI SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi 1 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi 1 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 1 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 1 NaN
72Narlıdere İlkokulu 72 71.0 RESMİ SALİHLİ İlkokul Narlıdere İlkokulu 1 NaN
Çıktı:
Eklenecekler: ['72Narlıdere İlkokulu', '21Subaşı İlkokulu']
Silinecekler: ['56Hisar İlkokulu', '55Selam Verdi İlkokulu']
Satır ya da Sütun Silmek için drop() Fonksiyonunu kullanabilirsin.
Eklenecek satırları ayrı bir dataframe olarak ayarlayıp concat() Fonksiyonu yardımı ile ana frame ile birleştirebilirsin.
Ya da
.append() Fonksiyonunu kullanabilirsin.
1 Beğeni
Merhaba,
Silme, Güncelleme ve Ekleme İşlemleri ile alakalı olarak, kendimce mantıklı birşeyler yapmaya alıştım.
Dosya isimlerini düzenleyerek aşağıdaki kodu dener misin?
import pandas as pd
df_ana = pd.read_excel("Ana_Tablo.ods")
# print(df_ana.head())
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.ods")
# print(df_guncel.head())
df_ana["Kurum_Kod_Ad"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_ADI"]
df_ana = df_ana.set_index("Kurum_Kod_Ad")
# print(df_ana.head())
df_guncel["Kurum_Kod_Ad"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_ADI"]
df_guncel = df_guncel.set_index("Kurum_Kod_Ad")
# print(df_guncel.head())
df_ana_indeks = df_ana.index
# print(df_ana_indeks)
df_guncel_indeks = df_guncel.index
# print(df_guncel_indeks)
print("DF_ANA:\n", df_ana)
print("\nDF_GUNCEL:\n", df_guncel)
ekle = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
ekle.append(indeks)
print("\n\nEklenecekler:", ekle)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
print("Silinecekler:", sil)
def satir_sil(satir):
df_ana.drop(satir, axis = 0, inplace = True)
for satir in sil:
satir_sil(satir)
print("\n\nDF_ANA SİLİNMİŞ HAL:\n", df_ana)
guncellenecekler = []
baslik_df_guncel = df_guncel.columns
for satir in df_guncel_indeks:
if satir in df_ana_indeks:
guncellenecekler.append(satir)
print("\n\nGÜNCELLENECEK VERİ:\n", guncellenecekler)
# def guncelle():
# for veri in guncellenecekler:
# for baslik in baslik_df_guncel:
# df_ana.at[veri, baslik] = df_guncel.at[veri, baslik]
def guncelle():
for veri in guncellenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
guncelle()
print("\n\nDF_ANA GÜNCELLENMİŞ HAL:\n", df_ana)
def ekleyin():
for veri in ekle:
df_ana.loc[veri] = df_guncel.loc[veri]
df_ana.loc[veri, "DURUMU"] = "(23.03.2024)"
ekleyin()
print("\n\nDF_ANA EKLENMİŞ HAL:\n", df_ana)
Çıktı:
DF_ANA:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
56Hisar İlkokulu 56 56.0 RESMİ SALİHLİ İlkokul Hisar İlkokulu İLKOKUL 1 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 1 NaN
8Atatürk İlkokulu 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu ORTAOKUL 1 NaN
9Sarıca İlkokulu 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
5Atatürk İlkokulu 5 5.0 RESMİ SALİHLİ İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
675. Yıl ilkokulu 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu İLKOKUL 1 NaN
55Selam Verdi İlkokulu 55 55.0 RESMİ SALİHLİ İlkokul Selam Verdi İlkokulu İLKOKUL 1 NaN
DF_GUNCEL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ1 SALİHLİ1 Anadolu Lisesi Salihli Anadolu Lisesi 2 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ2 SALİHLİ2 Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi 3 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ3 SALİHLİ3 İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 4 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ4 SALİHLİ4 Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 5 NaN
72Narlıdere İlkokulu 72 71.0 RESMİ5 SALİHLİ5 İlkokul 66 Narlıdere İlkokulu 6 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ6 SALİHLİ6 İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi 7 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ7 SALİHLİ7 İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi 8 NaN
8Atatürk İlkokulu 8 8.0 RESMİ8 SALİHLİ8 İlkokul 56 Atatürk İlkokulu 9 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ9 SALİHLİ9 Ortaokul Atatürk Ortaokulu 10 NaN
9Sarıca İlkokulu 9 9.0 RESMİ10 SALİHLİ10 İlkokul Sarıca İlkokulu 11 NaN
5Atatürk İlkokulu 5 5.0 RESMİ11 SALİHLİ11 İlkokul 34 Atatürk İlkokulu 12 NaN
675. Yıl ilkokulu 6 6.0 RESMİ12 SALİHLİ12 İlkokul 75. Yıl ilkokulu 13 NaN
21Subaşı İlkokulu 21 21.0 RESMİ13 SALİHLİ13 İlkokul Subaşı İlkokulu 14 NaN
Eklenecekler: ['72Narlıdere İlkokulu', '21Subaşı İlkokulu']
Silinecekler: ['56Hisar İlkokulu', '55Selam Verdi İlkokulu']
DF_ANA SİLİNMİŞ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 1 NaN
8Atatürk İlkokulu 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu ORTAOKUL 1 NaN
9Sarıca İlkokulu 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
5Atatürk İlkokulu 5 5.0 RESMİ SALİHLİ İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
675. Yıl ilkokulu 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu İLKOKUL 1 NaN
GÜNCELLENECEK VERİ:
['4Salihli Anadolu Lisesi', '3Mesleki ve Teknik Anadolu Lisesi', '1Anadolu İmam Hatip Lisesi', '11Anadolu İmam Hatip Lisesi', '2Osmanlı Kız Anadolu İmam Hatip Lisesi ', '2Osmanlı Kız Anadolu İmam Hatip Lisesi', '8Atatürk İlkokulu', '7Atatürk Ortaokulu', '9Sarıca İlkokulu', '5Atatürk İlkokulu', '675. Yıl ilkokulu']
DF_ANA GÜNCELLENMİŞ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ1 SALİHLİ1 Anadolu Lisesi Salihli Anadolu Lisesi NaN 2 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ2 SALİHLİ2 Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi NaN 3 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ3 SALİHLİ3 İmam Hatip Lisesi Anadolu İmam Hatip Lisesi NaN 4 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ4 SALİHLİ4 Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi NaN 5 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ6 SALİHLİ6 İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi NaN 7 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ7 SALİHLİ7 İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi NaN 8 NaN
8Atatürk İlkokulu 8 8.0 RESMİ8 SALİHLİ8 İlkokul 56 Atatürk İlkokulu NaN 9 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ9 SALİHLİ9 Ortaokul Atatürk Ortaokulu NaN 10 NaN
9Sarıca İlkokulu 9 9.0 RESMİ10 SALİHLİ10 İlkokul Sarıca İlkokulu NaN 11 NaN
5Atatürk İlkokulu 5 5.0 RESMİ11 SALİHLİ11 İlkokul 34 Atatürk İlkokulu NaN 12 NaN
675. Yıl ilkokulu 6 6.0 RESMİ12 SALİHLİ12 İlkokul 75. Yıl ilkokulu NaN 13 NaN
DF_ANA EKLENMİŞ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ1 SALİHLİ1 Anadolu Lisesi Salihli Anadolu Lisesi NaN 2 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ2 SALİHLİ2 Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi NaN 3 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ3 SALİHLİ3 İmam Hatip Lisesi Anadolu İmam Hatip Lisesi NaN 4 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ4 SALİHLİ4 Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi NaN 5 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ6 SALİHLİ6 İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi NaN 7 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ7 SALİHLİ7 İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi NaN 8 NaN
8Atatürk İlkokulu 8 8.0 RESMİ8 SALİHLİ8 İlkokul 56 Atatürk İlkokulu NaN 9 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ9 SALİHLİ9 Ortaokul Atatürk Ortaokulu NaN 10 NaN
9Sarıca İlkokulu 9 9.0 RESMİ10 SALİHLİ10 İlkokul Sarıca İlkokulu NaN 11 NaN
5Atatürk İlkokulu 5 5.0 RESMİ11 SALİHLİ11 İlkokul 34 Atatürk İlkokulu NaN 12 NaN
675. Yıl ilkokulu 6 6.0 RESMİ12 SALİHLİ12 İlkokul 75. Yıl ilkokulu NaN 13 NaN
72Narlıdere İlkokulu 72 71.0 RESMİ5 SALİHLİ5 İlkokul 66 Narlıdere İlkokulu NaN 6 (23.03.2024)
21Subaşı İlkokulu 21 21.0 RESMİ13 SALİHLİ13 İlkokul Subaşı İlkokulu NaN 14 (23.03.2024)
1 Beğeni
Mustafa Hocam, Teşekkür ederim, elinize emeğinize sağlık.
Hocam, Ana Tablodaki Eğitim Kademesi Başlığı siliniyor.
Ekran görüntüsünü ekledim.
df_guncel_indeks = df_guncel.index
satırından sonra,
df_guncel["EĞİTİM_KADEMESİ"] = df_ana["EĞİTİM_KADEMESİ"]
satırını ekleyip dener misiniz?
Nihai kod;
import pandas as pd
df_ana = pd.read_excel("Ana_Tablo.ods")
# print(df_ana.head())
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.ods")
# print(df_guncel.head())
df_ana["Kurum_Kod_Ad"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_ADI"]
df_ana = df_ana.set_index("Kurum_Kod_Ad")
# print(df_ana.head())
df_guncel["Kurum_Kod_Ad"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_ADI"]
df_guncel = df_guncel.set_index("Kurum_Kod_Ad")
# print(df_guncel.head())
df_ana_indeks = df_ana.index
# print(df_ana_indeks)
df_guncel_indeks = df_guncel.index
# print(df_guncel_indeks)
df_guncel["EĞİTİM_KADEMESİ"] = df_ana["EĞİTİM_KADEMESİ"]
print("DF_ANA:\n", df_ana)
print("\nDF_GUNCEL:\n", df_guncel)
eklenecekler = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
eklenecekler.append(indeks)
print("\n\nEklenecekler:", eklenecekler)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
print("Silinecekler:", sil)
def satir_sil(satir):
df_ana.drop(satir, axis = 0, inplace = True)
for satir in sil:
satir_sil(satir)
# print("\n\nDF_ANA SİLİNMİŞ HAL:\n", df_ana)
guncellenecekler = []
baslik_df_guncel = df_guncel.columns
for satir in df_guncel_indeks:
if satir in df_ana_indeks:
guncellenecekler.append(satir)
# print("\n\nGÜNCELLENECEK VERİ:\n", guncellenecekler)
### Bu guncelleme fonksiyonu da doğru çalışıyor.
### Bu guncellen() fonksiyonu da çalışıyor.
# def guncelle():
# for veri in guncellenecekler:
# for baslik in baslik_df_guncel:
# df_ana.at[veri, baslik] = df_guncel.at[veri, baslik]
def guncelle():
for veri in guncellenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
guncelle()
# print("\n\nDF_ANA GÜNCELLENMİŞ HAL:\n", df_ana)
def ekle():
for veri in eklenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
df_ana.loc[veri, "DURUMU"] = "(23.03.2024)"
ekle()
print("\n\nDF_ANA EKLENMİŞ HAL:\n", df_ana)
ÇIKTI:
DF_ANA:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM_KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
56Hisar İlkokulu 56 56.0 RESMİ SALİHLİ İlkokul Hisar İlkokulu İLKOKUL 1 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 1 NaN
8Atatürk İlkokulu 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu ORTAOKUL 1 NaN
9Sarıca İlkokulu 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
5Atatürk İlkokulu 5 5.0 RESMİ SALİHLİ İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
675. Yıl ilkokulu 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu İLKOKUL 1 NaN
55Selam Verdi İlkokulu 55 55.0 RESMİ SALİHLİ İlkokul Selam Verdi İlkokulu İLKOKUL 1 NaN
DF_GUNCEL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI SAYISI DURUMU EĞİTİM_KADEMESİ
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ1 SALİHLİ1 Anadolu Lisesi Salihli Anadolu Lisesi 2 NaN ORTAÖĞRETİM
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ2 SALİHLİ2 Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi 3 NaN ORTAÖĞRETİM
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ3 SALİHLİ3 İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 4 NaN ORTAÖĞRETİM
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ4 SALİHLİ4 Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 5 NaN ORTAÖĞRETİM
72Narlıdere İlkokulu 72 71.0 RESMİ5 SALİHLİ5 İlkokul 66 Narlıdere İlkokulu 6 NaN NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ6 SALİHLİ6 İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi 7 NaN ORTAÖĞRETİM
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ7 SALİHLİ7 İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi 8 NaN ORTAOKUL
8Atatürk İlkokulu 8 8.0 RESMİ8 SALİHLİ8 İlkokul 56 Atatürk İlkokulu 9 NaN İLKOKUL
7Atatürk Ortaokulu 7 7.0 RESMİ9 SALİHLİ9 Ortaokul Atatürk Ortaokulu 10 NaN ORTAOKUL
9Sarıca İlkokulu 9 9.0 RESMİ10 SALİHLİ10 İlkokul Sarıca İlkokulu 11 NaN İLKOKUL
5Atatürk İlkokulu 5 5.0 RESMİ11 SALİHLİ11 İlkokul 34 Atatürk İlkokulu 12 NaN İLKOKUL
675. Yıl ilkokulu 6 6.0 RESMİ12 SALİHLİ12 İlkokul 75. Yıl ilkokulu 13 NaN İLKOKUL
21Subaşı İlkokulu 21 21.0 RESMİ13 SALİHLİ13 İlkokul Subaşı İlkokulu 14 NaN NaN
Eklenecekler: ['72Narlıdere İlkokulu', '21Subaşı İlkokulu']
Silinecekler: ['56Hisar İlkokulu', '55Selam Verdi İlkokulu']
DF_ANA EKLENMİŞ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM_KADEMESİ SAYISI DURUMU
Kurum_Kod_Ad
4Salihli Anadolu Lisesi 4 4.0 RESMİ1 SALİHLİ1 Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 2 NaN
3Mesleki ve Teknik Anadolu Lisesi 3 3.0 RESMİ2 SALİHLİ2 Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 3 NaN
1Anadolu İmam Hatip Lisesi 1 1.0 RESMİ3 SALİHLİ3 İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 4 NaN
11Anadolu İmam Hatip Lisesi 11 11.0 RESMİ4 SALİHLİ4 Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 5 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 2.0 RESMİ6 SALİHLİ6 İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 7 NaN
2Osmanlı Kız Anadolu İmam Hatip Lisesi 2 NaN RESMİ7 SALİHLİ7 İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 8 NaN
8Atatürk İlkokulu 8 8.0 RESMİ8 SALİHLİ8 İlkokul 56 Atatürk İlkokulu İLKOKUL 9 NaN
7Atatürk Ortaokulu 7 7.0 RESMİ9 SALİHLİ9 Ortaokul Atatürk Ortaokulu ORTAOKUL 10 NaN
9Sarıca İlkokulu 9 9.0 RESMİ10 SALİHLİ10 İlkokul Sarıca İlkokulu İLKOKUL 11 NaN
5Atatürk İlkokulu 5 5.0 RESMİ11 SALİHLİ11 İlkokul 34 Atatürk İlkokulu İLKOKUL 12 NaN
675. Yıl ilkokulu 6 6.0 RESMİ12 SALİHLİ12 İlkokul 75. Yıl ilkokulu İLKOKUL 13 NaN
72Narlıdere İlkokulu 72 71.0 RESMİ5 SALİHLİ5 İlkokul 66 Narlıdere İlkokulu NaN 6 (23.03.2024)
21Subaşı İlkokulu 21 21.0 RESMİ13 SALİHLİ13 İlkokul Subaşı İlkokulu NaN 14 (23.03.2024)
1 Beğeni
Hocam, Merhaba;
Hatayı düzelttim.
Kodun son hali;
import pandas as pd
from openpyxl import workbook,load_workbook
df_ana = pd.read_excel("Ana_Tablo.xlsx")
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.xlsx")
df_ana["Kurum_Kod_Ad"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_ADI"]
df_ana = df_ana.set_index("Kurum_Kod_Ad")
df_guncel["Kurum_Kod_Ad"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_ADI"]
df_guncel = df_guncel.set_index("Kurum_Kod_Ad")
df_ana_indeks = df_ana.index
df_guncel_indeks = df_guncel.index
print("DF_ANA:\n", df_ana)
print("\nDF_GUNCEL:\n", df_guncel)
eklenecekler = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
eklenecekler.append(indeks)
print("\n\nEklenecekler:", eklenecekler)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
print("Silinecekler:", sil)
def satir_sil(satir):
df_ana.drop(satir, axis = 0, inplace = True)
for satir in sil:
satir_sil(satir)
def ekle():
for veri in eklenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
df_ana.loc[veri, "DURUMU"] = "Yeni Açılış"+" "+ "(23.03.2024)"
df_ana.loc[veri, "SAYISI"] =1
ekle()
print("\n\nDF_ANA EKLENMİŞ HAL:\n", df_ana)
df_ana=df_ana.set_index("KURUM_KODU")
df_ana=df_ana.sort_values(by=['İLÇE','KURUM_ADI'])
print(df_ana)
#------------------------------------------------------------------------------------------------------------
# Kaydet
def write_excel(filename, Sayfa, dataframe):
with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
workBook = writer.book
try:
workBook.remove(workBook[Sayfa])
except:
print("Worksheet does not exist")
finally:
dataframe.to_excel(writer, sheet_name='Ana_Tablo')
writer._save()
filename = (r"D:\PYTHON_DATA\ÖRNEK_DOSYALAR\Ana_Tablo.xlsx")
write_excel(filename, "Ana_Tablo" ,df_ana)
wb = load_workbook(filename)
sa = len(wb.sheetnames) # sekme adları sayısı
wb.move_sheet("Ana_Tablo", offset = -(sa-1))
wb.save(filename)
Hocam kurumlardaki değişiklik genelde iki türlü oluyor;
Birincisi kurum sıfırdan açılır, kod ve her şeyi yenidir benzeri yoktur,
İkincisi ise kurum kodu ve diğer bilgileri değişmez sadece okulun adı değişir.
Bu iki durumu ayırmak için Durumu başlığına Yeni Açılış (Açılış tarihi), Okul Adı Değişikliği (Değişiklik tarihi) açıklaması düşerek çözüyoruz.
Kodda bu iki durumu ayırmak için ne yapa biliriz
Teşekkür ederim.
Merhaba,
Gün içerisinde foruma göz attığımda;
ValueError: cannot reindex on an axis with duplicate labels
hata mesajı aldığını okumuştum ancak cevap yazamadım.
Bu sorunun sebebi; Benzersiz olması gereken index bilgilerinin bazısının benzer olması kaynaklıydı. Bu konuyla alakalı aşağıdaki bağlantıyı inceleyebilirsin:
Bu hatayı almanın sebebi ise, kod içerisinde indeks olarak aşağıdaki kodların yazılması idi:
df_ana["Kurum_Kod_Ad"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_ADI"]
df_ana = df_ana.set_index("Kurum_Kod_Ad")
df_guncel["Kurum_Kod_Ad"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_ADI"]
df_guncel = df_guncel.set_index("Kurum_Kod_Ad")
Bu kodu yazarken KURUM_KODU ve KURUM_ADI değerlerinin değişmez olduğunu düşünmüştüm.
Madem KURUM_ADI değişebilir o halde Benzersiz olması gerek indeks değerini aşağıdaki şekilde güncelleyerek sorunu çözebiliriz.
df_ana["Kurum_Kod_Kod1"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_KODU1"].astype(str)
df_ana = df_ana.set_index("Kurum_Kod_Kod1")
df_guncel["Kurum_Kod_Kod1"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_KODU1"].astype(str)
df_guncel = df_guncel.set_index("Kurum_Kod_Kod1")
Yeni soruna gelisek;
Hocam kurumlardaki değişiklik genelde iki türlü oluyor;
Birincisi kurum sıfırdan açılır, kod ve her şeyi yenidir benzeri yoktur,
İkincisi ise kurum kodu ve diğer bilgileri değişmez sadece okulun adı değişir.
Bu iki durumu ayırmak için Durumu başlığına Yeni Açılış (Açılış tarihi), Okul Adı Değişikliği (Değişiklik tarihi) açıklaması düşerek çözüyoruz.
Bunu çözmek için sadece ilgili indeks ve okulun adı (KURUM_ADI) sütununu kıyaslayıp (loc[], iloc[], at[], iat[]
metotları kullanılabilir zannımca) fark olması halinde Durum bilgisi güncellenebilir.
Yeni eklenen Veri için zaten Durum bilgisi ekleniyor.
Birşeyler denedikten sonra sonucu paylaşırım.
Aşağıdaki kodu dener misin?
import pandas as pd
df_ana = pd.read_excel("Ana_Tablo.ods")
print("DF_ANA_KURUM:\n", df_ana)
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.ods")
print("\nDF_GUNCEL_KURUM:\n", df_guncel)
df_ana["Kurum_Kod_Kod1"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_KODU1"].astype(str)
df_ana = df_ana.set_index("Kurum_Kod_Kod1")
df_guncel["Kurum_Kod_Kod1"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_KODU1"].astype(str)
df_guncel = df_guncel.set_index("Kurum_Kod_Kod1")
df_ana_indeks = df_ana.index
df_guncel_indeks = df_guncel.index
df_guncel["EĞİTİM_KADEMESİ"] = df_ana["EĞİTİM_KADEMESİ"]
### Güncelleme Fonksiyonu
def guncelle():
for indeks in df_ana.index:
if indeks in df_guncel.index:
if (df_ana.loc[indeks, "KURUM_ADI"] == df_guncel.loc[indeks, "KURUM_ADI"]):
continue
else:
df_ana.loc[indeks, "KURUM_ADI"] = df_guncel.loc[indeks, "KURUM_ADI"]
df_ana.loc[indeks, "DURUMU"] = "Okul Adı Değişikliği (27.04.2024)"
guncelle()
eklenecekler = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
eklenecekler.append(indeks)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
def satir_sil(satir):
df_ana.drop(satir, axis = 0, inplace = True)
for satir in sil:
satir_sil(satir)
def ekle():
for veri in eklenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
df_ana.loc[veri, "DURUMU"] = "Yeni Açılış (23.03.2024)"
ekle()
print("\n\nDF_ANA_KURUM NİHAİ HAL:\n", df_ana)
ÇIKTI:
DF_ANA_KURUM:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM_KADEMESİ SAYISI DURUMU
0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
1 56 56.0 RESMİ SALİHLİ İlkokul Hisar İlkokulu İLKOKUL 1 NaN
2 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
3 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
4 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
5 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
6 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 1 NaN
7 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
8 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu ORTAOKUL 1 NaN
9 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
10 5 5.0 RESMİ SALİHLİ İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
11 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu İLKOKUL 1 NaN
12 55 55.0 RESMİ SALİHLİ İlkokul Selam Verdi İlkokulu İLKOKUL 1 NaN
DF_GUNCEL_KURUM:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI SAYISI DURUMU
0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi 2 NaN
1 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı 6 Mesleki ve Teknik Anadolu Lisesi 3 NaN
2 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 4 NaN
3 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi 5 NaN
4 72 71.0 RESMİ OSMANLI İlkokul 66 Narlıdere İlkokulu 6 NaN
5 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi 4 Osmanlı Kız Anadolu İmam Hatip Lisesi 7 NaN
6 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi 8 NaN
7 8 8.0 RESMİ SARICA İlkokul 56 Atatürk İlkokulu 9 NaN
8 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu 10 NaN
9 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu 11 NaN
10 5 5.0 RESMİ SALİHLİ İlkokul 34 Gazi İlkokulu 12 NaN
11 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu 13 NaN
12 21 21.0 RESMİ SALİHLİ İlkokul Subaşı İlkokulu 14 NaN
DF_ANA_KURUM NİHAİ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM_KADEMESİ SAYISI DURUMU
Kurum_Kod_Kod1
44.0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
33.0 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
11.0 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
1111.0 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
22.0 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2nan 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAOKUL 1 NaN
88.0 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
77.0 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu ORTAOKUL 1 NaN
99.0 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
55.0 5 5.0 RESMİ SALİHLİ İlkokul Gazi İlkokulu İLKOKUL 1 Okul Adı Değişikliği (27.04.2024)
66.0 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl ilkokulu İLKOKUL 1 NaN
7271.0 72 71.0 RESMİ OSMANLI İlkokul 66 Narlıdere İlkokulu NaN 6 Yeni Açılış (23.03.2024)
2121.0 21 21.0 RESMİ SALİHLİ İlkokul Subaşı İlkokulu NaN 14 Yeni Açılış (23.03.2024)
1 Beğeni
Hocam, Teşekkür ederim. Elinize emeğinize sağlık.
Hocam, bu şekilde verileri ekleme, güncelleme işlemlerini yapıyorum.
Birde Ana_tabloda, yeni eklenen kurumların Eğitim_Kademesi başlığı boş.
Buraya;
Eğer Okul_Adında İlkokul veya II. Kademe var ise Eğitim_Kademesi başlına ‘İLKOKUL’ yazsın,
Eğer Okul_Adında Lisesi veya Merkezi var ise Eğitim_Kademesi başlına ‘ORAÖĞRETİM’ yazsın getirebilir miyiz.
Kodun sonuna aşağıdaki kod parçasını ekleyerek deneyebilirsin.
def egitim_durumu(okul):
if ("İlkokul" in okul) or ("II. Kademe" in okul) or ("Ortaokulu" in okul):
return "İLKOKUL"
elif ("Lisesi" in okul) or ("Merkezi" in okul):
return "ORTAÖĞRETİM"
df_ana["EĞİTİM_KADEMESİ"] = df_ana["KURUM_ADI"].apply(egitim_durumu)
print("\n\nDF_ANA_KURUM EĞİTİM_KADEMESİ EKLENMİŞ NİHAİ HAL:\n", df_ana)
Çıktı:
DF_ANA_KURUM EĞİTİM_KADEMESİ EKLENMİŞ NİHAİ HAL:
KURUM_KODU KURUM_KODU1 Tipi İLÇE KURUM_TÜRÜ KURUM_ADI EĞİTİM_KADEMESİ SAYISI DURUMU
Kurum_Kod_Kod1
44.0 4 4.0 RESMİ SALİHLİ Anadolu Lisesi Salihli Anadolu Lisesi ORTAÖĞRETİM 1 NaN
33.0 3 3.0 RESMİ SALİHLİ Anadolu Meslek Programı Mesleki ve Teknik Anadolu Lisesi ORTAÖĞRETİM 1 NaN
11.0 1 1.0 RESMİ SALİHLİ İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
1111.0 11 11.0 RESMİ SALİHLİ Anadolu İmam Hatip Lisesi Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
22.0 2 2.0 RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
2nan 2 NaN RESMİ OSMANLI İmam Hatip Lisesi Osmanlı Kız Anadolu İmam Hatip Lisesi ORTAÖĞRETİM 1 NaN
88.0 8 8.0 RESMİ SARICA İlkokul Atatürk İlkokulu İLKOKUL 1 NaN
77.0 7 7.0 RESMİ SARICA Ortaokul Atatürk Ortaokulu İLKOKUL 1 NaN
99.0 9 9.0 RESMİ SARICA İlkokul Sarıca İlkokulu İLKOKUL 1 NaN
55.0 5 5.0 RESMİ SALİHLİ İlkokul Gazi II. Kademe İLKOKUL 1 Okul Adı Değişikliği (27.04.2024)
66.0 6 6.0 RESMİ SALİHLİ İlkokul 75. Yıl İlkokulu İLKOKUL 1 NaN
7271.0 72 71.0 RESMİ SALİHLİ İlkokul Narlıdere İlkokulu İLKOKUL 6 Yeni Açılış (23.03.2024)
2121.0 21 21.0 RESMİ SUBAŞI İlkokul Subaşı İlkokulu İLKOKUL 14 Yeni Açılış (23.03.2024)
1 Beğeni
Hocam, elinize emeğinize sağlık. Teşekkür ederim
Kodun son hali;
import pandas as pd
from openpyxl import load_workbook
import datetime
import time
df_ana = pd.read_excel("Ana_Tablo.xlsx")
df_guncel = pd.read_excel("Güncel_Kurum_Sayıları.xlsx")
df_ana["Kurum_Kod_Kod1"] = df_ana["KURUM_KODU"].astype(str) + df_ana["KURUM_KODU1"].astype(str)
df_ana = df_ana.set_index("Kurum_Kod_Kod1")
df_guncel["Kurum_Kod_Kod1"] = df_guncel["KURUM_KODU"].astype(str) + df_guncel["KURUM_KODU1"].astype(str)
df_guncel = df_guncel.set_index("Kurum_Kod_Kod1")
df_ana_indeks = df_ana.index
df_guncel_indeks = df_guncel.index
### Güncelleme Fonksiyonu
def guncelle():
for indeks in df_ana.index:
if indeks in df_guncel.index:
if (df_ana.loc[indeks, "KURUM_ADI"] == df_guncel.loc[indeks, "KURUM_ADI"]):
continue
else:
df_ana.loc[indeks, "KURUM_ADI"] = df_guncel.loc[indeks, "KURUM_ADI"]
df_ana.loc[indeks, "DURUMU"] = datetime.date.today().__format__('Kurum Adı Değişikliği' +" "+"("+ ('%d.%m.%Y'))+')'
if (df_ana.loc[indeks, "KURUM_TÜRÜ"]!= df_guncel.loc[indeks, "KURUM_TÜRÜ"]):
df_ana.loc[indeks, "KURUM_TÜRÜ"] = df_guncel.loc[indeks, "KURUM_TÜRÜ"]
guncelle()
eklenecekler = []
for indeks in df_guncel_indeks:
if indeks not in df_ana_indeks:
eklenecekler.append(indeks)
sil = []
for indeks in df_ana_indeks:
if indeks not in df_guncel_indeks:
sil.append(indeks)
def satir_sil(satir):
df_ana.drop(satir, axis = 0, inplace = True)
for satir in sil:
satir_sil(satir)
def ekle():
for veri in eklenecekler:
df_ana.loc[veri] = df_guncel.loc[veri]
df_ana.loc[veri, "DURUMU"] =datetime.date.today().__format__('Yeni Açılış' +" "+"("+ ('%d.%m.%Y'))+')'
df_ana.loc[veri, "SAYISI"] = 1
ekle()
print("\n\nDF_ANA_KURUM NİHAİ HAL:\n", df_ana)
#------------------------------------------------------------------------------------------------------------------
def egitim_durumu(okul):
if ("İlkokul" in okul) or ("I. Kademe" in okul):
return "İLKOKUL"
elif ("Ortaokul" in okul) or ("II. Kademe" in okul):
return "ORTAOKUL"
elif ("Lisesi" in okul) or ("Merkezi" in okul) or ("III. Kademe" in okul):
return "ORTAÖĞRETİM"
df_ana["EĞİTİM_KADEMESİ"] = df_ana["KURUM_ADI"].apply(egitim_durumu)
#print("\n\nDF_ANA_KURUM EĞİTİM_KADEMESİ EKLENMİŞ NİHAİ HAL:\n", df_ana)
#---------------------------------------------------------------------------------------------------------------
df_ana=df_ana.set_index("KURUM_KODU")
df_ana=df_ana.sort_values(by=['İLÇE','KURUM_ADI'])
print(df_ana)
#------------------------------------------------------------------------------------------------------------
# Kaydet
def write_excel(filename, Sayfa, dataframe):
with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
workBook = writer.book
try:
workBook.remove(workBook[Sayfa])
except:
print("Worksheet does not exist")
finally:
dataframe.to_excel(writer, sheet_name='Ana_Tablo')
writer._save()
filename = (Ana_Tablo.xlsx")
write_excel(filename, "Ana_Tablo" ,df_ana)
wb = load_workbook(filename)
sa = len(wb.sheetnames) # sekme adları sayısı
wb.move_sheet("Ana_Tablo", offset = -(sa-1))
wb.save(filename)
Rica ederim.
İş görür bir kod çıktı ortaya desene ![:slight_smile: :slight_smile:](https://forum.yazbel.com/images/emoji/twitter/slight_smile.png?v=12)
Emeğimizin karşılığını almak güzel.
1 Beğeni