Ek yükü dikkate almazsanız, ortak python dağıtımlarıyla birlikte gönderilen pandaları kullanabilirsiniz. E-tablo tablolarıyla daha fazlasını yapmayı planlıyorsanız, kendi kitaplıklarınızı yazmaya çalışmak yerine pandaları kullanmanızı öneririm.
import pandas as pd
import glob
interesting_files = glob.glob("*.csv")
df_list = []
for filename in sorted(interesting_files):
df_list.append(pd.read_csv(filename))
full_df = pd.concat(df_list)
full_df.to_csv('output.csv')
Sadece biraz daha pandalar. E-tablo benzeri verilerle başa çıkılacağı için ilk satırın bir başlık olduğunu biliyor. Bir CSV'yi okurken, veri tablosunu pandalardaki standart veri türü olan dataframe
'un meta verileri olarak tutulan başlıktan ayırır. Bu dataframes
'un birçoğuna uyuyorsanız, başlıkları aynıysa sadece veri bölümlerini birleştirir. Başlıklar aynı değilse, başarısız olur ve size bir hata verir. Dizininizin başka bir kaynaktan gelen CSV dosyalarıyla kirlenmesi durumunda muhtemelen iyi bir şey.
Başka bir şey: interesting_files
'un çevresine sorted()
ekledim. Dosyalarınızın sırayla isimlendirildiğini ve bu siparişin tutulması gerektiğini kabul ediyorum. Küre hakkında emin değilim, ancak os
işlevleri, adlarına göre sıralanmış dosyaları döndürmek zorunda değil. Ben en iyi yanıtı @valentin gelen biri olduğunu düşünürken
Ben bugüne kadar ne çalıştığımız güncelledik. @MarcB –
öyleyse sorun nedir? İlk dosyanın başlık satırını korumanın dışında çalışması gerektiği gibi görünüyor. –
csv.reader satırında girinti (fin, sınırlayıcı = ','): yanlış görünüyor. – russdot