2016-04-06 22 views
2

14 satırlık bir başlık içeren bir veri dosyanız var. Üstbilgide, enlem boylamı koordinatları ve zamanı için meta veriler bulunur. Şu anda dosyada okumak içinPandalar kullanarak csv dosyasından başlık bilgilerini okuma

'u kullanıyorum ancak bu yalnızca veriyi alıyor ve meta verileri alamıyorum. Başlıktaki bilgilerin nasıl okunacağını bilen var mı? Sen kendiniz meta başlığı ayrıştırmak zorunda

CSD,20160315SSIO 
NUMBER_HEADERS = 11 
EXPOCODE = 33RR20160208 
SECT_ID = I08 
STNBBR = 1 
CASTNO = 1 
DATE = 20160219 
TIME = 0558 
LATITUDE = -66.6027 
LONGITUDE = 78.3815 
DEPTH = 462 
INSTRUMENT_ID = 0401 
CTDPRS,CTDPRS_FLAG,CTDTMP,CTDTMP_FLAG 
DBAR,,ITS-90,,PSS-78 
+0

'read_csv()' a [ 'header'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html) seçeneği vardır sütun adları olarak başlıkları ile sonuçta elde edilen veri. Aradığınız bu mu? –

+0

Muhtemelen 'header = range (14)' kullanmalısınız? Çünkü 'header = 14' ile sadece header için 14. satırı kullanacak ve 1-13 satır atlayacaksınız. –

+1

Başlık hangi formatta? Göründüğü şeyin bir örneğini göndermelisin. Muhtemelen pandas.read_csv ile okuyamayacaksınız çünkü csv'ler için standart bir meta veri formatı yoktur, bazı özel kodlar yazmanız gerekebilir. – Marius

cevap

0

Aşağıdaki yöntem Panda'ları kullanmasa da, başlık bilgilerini ayıklayabildim. Eğer doldurmak böylece

with open(fname) as csvfile: 
    forheader_IO2016 = csv.reader(csvfile, delimiter=',') 
    header_IO2016 = [] 
    for row in forheader_IO2016: 
     header_IO2016.append(row[0]) 

date = header_IO2016[7].split(" ")[2] 
time = header_IO2016[8].split(" ")[2] 
lat = float(header_IO2016[9].split(" ")[2]) 
lon = float(header_IO2016[10].split(" ")[4]) 
1

, henüz tek bir geçişte zarif bir şekilde bunu yapabilir ve hatta anında onu kullanarak bu dışarı veri ayıklamak, böylece: benzeri başlığı görünüyor Sonra

f = open(filename) 

bunun dışında veri ayıklamak için her meta veri hattını ayrıştırmak için işi yaparken/dosya vb

İlk doğruluğunu kontrol dosyaya kendini açın. Tarif amacıyla, sadece bu satırları atlayarak ediyorum:

for i in range(13): # skip the first 13 lines that are useless for the columns definition 
    f.readline() # use the resulting string for metadata extraction 

Şimdi de DataFrame yüklemek için kullanmak istediğiniz benzersiz başlık satırında hazır dosya işaretçisi var. Harika olan şey, read_csv'un dosya nesnelerini kabul etmesidir! Böylece artık hemen DataFrame yükleme başlamadan: Ben senin açıklama ile düşünün gibi ben başlık argümanını kullanmayın

pandas.read_csv(f, sep=",") 

Not Eğer dataframe için yararlıdır başlığının sadece son bir çizgi var. Bu örnekten atlamak için dinleyici ayrıştırma değerlerini/satırlarını oluşturabilir ve ayarlayabilirsiniz.

İlgili konular