Merhaba,
df.loc[lambda df: df['shield'] == 8]
bu tür lambda
fonksiyonu kullanılarak “koşula göre seçim” yapmak elbette mümkün ancak bu tür bir kodla değer değil bir data frame seçmiş oluyoruz.
Örneğin:
df_lambda = df_bina.loc[lambda df_bina : (df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI")]
print(df_lambda)
kodunun çıktısı şudur;
Çıktı;
KURUM_KODU TİPİ İLÇE KULLANIM_ALANI OKUL_KURUM_ADI SAYISI
0 11 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Halk Eğitimi Merkezi 22
2 12 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Atatürk İlkokulu 12
3 13 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Atatürk Ortaokulu 5
4 14 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Kirboga İlkokulu 4
6 14 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Kirboga İlkokulu 12
8 16 RESMI BUNYAN 8- TOPLAM DERSLİK SAYISI Halk Eğitim Merkezi 14
9 17 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Kutu Tepe İlkokulu 12
13 16 RESMI BUNYAN 8- TOPLAM DERSLİK SAYISI Halk Eğitim Merkezi 9
14 20 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Ortaköy Ortaokulu İS- 10
16 22 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Çok Programlı Anadolu 5
17 23 ÖZEL SARICA 8- TOPLAM DERSLİK SAYISI OZELSARICA ANAOKULU 12
19 24 RESMİ BÜNYAN 8- TOPLAM DERSLİK SAYISI Dereli İlkokulu 4
20 25 RESMİ ŞARKIŞLA 8- TOPLAM DERSLİK SAYISI Dereli Ortaokulu 5
22 26 RESMİ SARICA 8- TOPLAM DERSLİK SAYISI Atatürk İlkokulu 7
Bu durumda hala 14 ve 16 numaralı KURUM_KODU’na ait birden fazla değer var. Bu değerleri pivot()
veya groupby()
metotları kullanılarak toplanmalı.
Bu işlemden sonra df_ana
ile df_lambda
isimli dataframe verileri (concat()
, merge()
, join()
gibi metotlarla birleştirilebileceği gibi, df_ana["DERSLİK_SAYISI"] = df_lambda["SAYISI"]
kodu ile ilgili veriler, df_ana["DERSLİK_SAYISI"]
sütununa atanabilir.
Seçim yapmak için İki koşul kullanılacaksa and
operatörü yerine &
işareti kullanılmalı: Örnek 2:
df_lambda = df_bina.loc[lambda df_bina : (df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI") & (df_bina["KURUM_KODU"] == 16)]
print(df_lambda)
kodunun çıktısı şudur;
Çıktı;
KURUM_KODU TİPİ İLÇE KULLANIM_ALANI OKUL_KURUM_ADI SAYISI
8 16 RESMI BUNYAN 8- TOPLAM DERSLİK SAYISI Halk Eğitim Merkezi 14
13 16 RESMI BUNYAN 8- TOPLAM DERSLİK SAYISI Halk Eğitim Merkezi 9
Önceki mesajlarda paylaştığım kodlar işe yaramadı mı?
Acaba sorunun tam olarak ne olduğunu mu anlayamadım? Çünkü Paylaştığınız ekran görüntülerine göre verileri oluşturup kodu çalıştırdığımda, sonucu elde ediyorum.
Aşağıdaki kod ile;
- KURUM_KODU’na ait birden fazla değer varsa toplamlarını alıyor ve bir veri çerçevesinde tutuyorum.
df1 = df_bina.loc[lambda df_bina : (df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI")]
df1 = df1.groupby("KURUM_KODU").sum()["SAYISI"]
Çıktısı:
KURUM_KODU
11 22
12 12
13 5
14 16
16 23
17 12
20 10
22 5
23 12
24 4
25 5
26 7
Name: SAYISI, dtype: int64
df1’i şu şekilde yazsaydık ta aynı sonucu elde ederdik;
df1 = df_bina[df_bina["KULLANIM_ALANI"] == "8- TOPLAM DERSLİK SAYISI"]
df_ana
tablosunun index değerini “KURUM_KODU” olarak atayıp df_ana["DERSLİK_SAYISI"]
sütun değerlerini df1
e atarsak (eşitlersek) sorun çözülüyor gibi görünüyor.
df_ana = df_ana.set_index("KURUM_KODU")
df_ana["DERSLİK_SAYISI"] = df1
print(df_ana)
Çıktı:
TİPİ İLÇE OKUL_KURUM_ADI DERSLİK_SAYISI
KURUM_KODU
11 RESMİ SARICA HalkEğitimi Merkezi 22.0
12 RESMİ BÜNYAN Atatürk İlkokulu 12.0
13 RESMİ ŞARKIŞLA Atatürk Ortaokulu 5.0
14 RESMİ SARICA Kırboğa İlkokulu 16.0
15 RESMİ SARICA Kırboğa Ortaokulu NaN
16 RESMİ BÜNYAN Halk Eğitim Merkezi 23.0
17 RESMİ ŞARKIŞLA Kutu Tepe İlkokulu 12.0
18 RESMİ SARICA Kutu Tepe Ortaokulu NaN
19 RESMİ SARICA Ortaköy İlkokulu NaN
20 RESMİ BÜNYAN Ortaköy Ortaokulu 10.0
21 RESMİ ŞARKIŞLA İmam Hatip Ortaokulu NaN
22 RESMİ SARICA Çok Programlı Anadolu Lisesi 5.0
23 RESMİ SARICA Sanica Anaokulu 12.0
24 RESMİ BÜNYAN Dereli İlkokulu 4.0
25 RESMİ ŞARKIŞLA Dereli Ortaokulu 5.0
26 RESMİ SARICA Atatürk İlkokulu 7.0
Konsol ekranında NaN (Not A Number) yazması sizi şaşırtmasın. Vevi çerçevesini dışa aktardığınızda (excel dosyası olarak kaydettiğinizde) ilgili hücreler boş olarak görüntüleniyor.
Birçok dosya ile çalışıyorum ve veriler çok satırlı diyorsunuz.
Farklı dosya içerikleri varsa bunları ya da ekran görüntülerini paylaşırsanız, kodu onlar üzerinde çalıştırarak ta deneyebilirim.