[]

python for loop sorunu

/data klasöründe 12 adet tif dosyam var. aşağıdaki adımları tek tek bütün tif dosyalarına uygulamak istiyorum.

- /data klasöründen bir tif dosyasını gr.from_file kodu ile aç
- tif verisini pandas dataframe'ine .to_pandas() komutu ile gönder
- oluşan pandas dataframe'i içinde adı column olan sütun adını tif dosya adı ile değiştir.
- sütun adı değiştirilen dataframe'i tif adı ile kaydet.

aşağıda verdiğim kod tif dosyalarına tek tek uygulanınca istediğim gibi çalışıyor.

import georasters as gr
import numpy as np
import pandas as pd
import os
import glob

Altitude = './data/Altitude.tif'
Altitude = gr.from_file(Altitude)
Altitude = Altitude.to_pandas()
Altitude = Altitude.rename(columns={"value":"Altitude"})
Altitude

Bu şekilde tif dosyalarına tek tek uygulamak çok kullanışsız olduğundan for loop ile aşağıdaki kodu derledim.

# assign directory
directory = 'data/'

for filename in os.listdir('data/'):
f = os.path.join(directory, filename)
# checking if it is a file
if os.path.isfile(f):
a = gr.from_file(f)
a = a.to_pandas()
a = a.rename(columns={'value':'a'})
print(a)

ancak bu döngü istediğim gibi çalışmıyor. kod 12 tif için de çalışıyor ancak sadece son tif'in verisini saklıyor. tif'in verisini de tif'in adıyla değil, a olarak saklıyor. yardımcı olabilecek birileri var mı?

 
print var ama sonucu save ettiğiniz kod yok gibi? dosyayı nasıl kaydediyorsunuz?


  • plutongezegendegilmi  (23.03.22 10:23:38) 
@plutongezegendegilmi sanırım kaydetmiyorum (: nasıl yapabilirim?


  • goddar  (23.03.22 10:29:25) 
programtalk.com

bu örnek işe yarar mı?
  • kisa  (23.03.22 10:53:34) 
Dökümantasyona göre:

a.to_tiff(f)

Bir de hocam "a" gibi değişken isimleri kullanmayın, anlamlı isimler kullanın. Aynı değişkeni kullanmak zorunda değilsiniz, yeni değişkenler kullanın uzun uzun. Performans falan tamam ama okunabilirlik de önemli :)
  • plutongezegendegilmi  (23.03.22 10:54:11) 
@kisa buradakiler işimi görmüyor gibi sanki.
@plutongezegendegilmi hocam zaten benim amacım her bir tif dosyasını pandas dataframe'ine okumak. daha sonra bütün dataframeleri birleştirip işlem yapacağım. sizin gönderdiğinizi eklersem şöyle olmuş olacak: tifi pandas dataframeine oku sonra pandas dataframini tife çevir. yani başladığım yere dönmüş oluyorum.

  • goddar  (23.03.22 11:11:46) 
@plutongezegendegilmi istediğmi yapan bir koda ulaşabilsem uzun uzun daha okunabilir hale getiririm (:


  • goddar  (23.03.22 11:12:30) 
şu şekilde çözdüm arkadaşlar sağolun. ancak değişkenler değişebilir. değişken isimlerinin nasıl olması konusunda belli başlı kurallar ya da yaygın kullanımlar var mıdır?

# assign directory
directory = 'data/'
l=[]
for filename in os.listdir('data/'):
f = os.path.join(directory, filename)
cleanname = filename[0:-4]
if os.path.isfile(f):
a = gr.from_file(f)
a = a.to_pandas()
a = a.rename(columns={'value':cleanname})
l.append(a)
print(a)
  • goddar  (23.03.22 12:11:28) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.