Dataframe'de bazı sütünları gizlemek

Selamlar,

dataframe içinde 8 sütunum var.

print(df.loc[df['satis_fiyati'].isna()]) 

ile görüntülediğimde bunların tümünü (satis_fiyati boş olanları tabi ki) ekrana basıyor. Ancak ben bunların içinde 3 sütunun görünmesini istemiyorum.

df.drop(['tip'], inplace=True, axis=1)
df.drop(['satis_fiyati'], inplace=True, axis=1)
df.drop(['satis_tarihi'], inplace=True, axis=1)

ile sileyim desem (silmek istemiyorum ama başka yol da bilmiyorum) tip ve satis_tarihi nde bir problem yok ama satis_fiyati isna ile bağlantılı olduğundan hata veriyor. Bu 3 sütunu nasıl görünmez yapabilirim?

Teşekkürler

pandas.io.formats.style.Styler.hide — pandas 1.4.3 documentation (pydata.org)

pandas.io.formats.style.Styler.hide_columns — pandas 1.4.3 documentation (pydata.org)

1. Yöntem;

Veri Çerçevesi (DataFrame) oluştururken, sadece istediğimiz sütunların kullanılması gerektiğinde usecols parametresini kullanmalıyız.

df = pd.read_excel(“dosya_adı.xls”, usecols = [“Sütun1”, “Sütun5”, Sütun9”]

Değer olarak sütun adı ya da sütun indisi yazılabilir.

df = pd.read_excel(“dosya_adı.xls”, usecols = [2,3,8]

Kaynak: Pandas Özet Bilgi Tablosu (CheatSheet) - mhalil.github.io

2. bir yöntem;

df isimli DataFrame’den df2 adında yeni bir dataframe oluşturabilirsin ancak istemediğin sütunları dahil etmezsin.

df2 = df[["Sütun1", "Sütun2", "Sütun4", "Sütun7", "Sütun8"]]

daha sonra df2 dataframe’e, df’in satis_fiyati üzerinden filtre uygulayabilirsin.

df2[df['satis_fiyati'].isna()]

3. ve senin istediğin çözüm yöntemi :slight_smile:

"tip", “satis_fiyati” ve “satis_tarihi” dışındaki sütun isimlerini (örnek olarak Sütun1", “Sütun2”, “Sütun4”, “Sütun7”, “Sütun8”) bir liste olarak df dataframe isminin sonuna köşeli parantez içerisinde ekleyerek sütünlara filtre uygulamış olursun. Ardından .loc[df[‘satis_fiyati’].isna() ile satis_fiyati sütununda boş olan satırlara filtre uygularsın.

df[["Sütun1", "Sütun2", "Sütun4", "Sütun7", "Sütun8"]].loc[df['satis_fiyati'].isna()]
1 Beğeni

Teşekkür ederim.
usecols işime yarayan bir parametre değil. ikinci bir dataframe e almak da çözüm değil. Çünkü sonuçta filtre uygulayacağım ve görünmesini istemediğim sütun aynı. ayrıca daha kısa kodla çözmek varken onu ona aktar onu buna çevir o değikene gitsin vs vs işi uzatıyor.

@semtex in bahsettiği style daha pratik gibi duruyor. Hoş daha çözemedim ama tam ihtiyacım olan özelliklere sahip

3. yöntemini gördün mü?

"tip", “satis_fiyati” ve “satis_tarihi” dışındaki sütun isimlerini (örnek olarak Sütun1", “Sütun2”, “Sütun4”, “Sütun7”, “Sütun8”) bir liste olarak df dataframe isminin sonuna köşeli parantez içerisinde ekleyerek sütünlara filtre uygulamış olursun. Ardından .loc[df[‘satis_fiyati’].isna() ile satis_fiyati sütununda boş olan satırlara filtre uygularsın.

df[["Sütun1", "Sütun2", "Sütun4", "Sütun7", "Sütun8"]].loc[df['satis_fiyati'].isna()]

Yani aslında ilk onu alıp denediğimde hata almıştım. Şimdi ikinciye denediğimde harf hatası yaptığımı farkettim.
Teşekkür ederim tam çözüm oldu :+1:

Rica ederim.
DataFrame konusu resmen bir derya.
daha basit çözüler de vardır mutlaka.

örneğinde 8 sütun vardı, ya 80 sütun olsaydı!
3 sütunu gizlemek için 77 sütun ismini yazmamız mı gerekecekti?

Mevcut bilgimle, bu tür bir durumun önüne geçmek için uygulayabileceğim yöntem;

sütun isimlerini df.columns kodu ile alıp bir listeye atardım.
for döngüsü kurarak Görüntülenmesini istediğim sütun isimlerini listeden çıkarır, listenin son halini yukarıdaki koda eklerdim.