2013-06-12 57 views
1

我如何將第一行的文本文件轉換爲Python中的列表?我想在轉換成列表時逃避NaNs。如何將文本文件的第一行轉換爲python轉義列表中的列表?

import csv 
with open ('data.txt', 'r') as f: 
    first_row = [column[0] for column in csv.reader(f,delimiter='\t')] 
    print (first_row) 
+0

提供一些這方面的更多背景 - 什麼樣的輸入數據的? 「逃脫NaNs」是什麼意思? –

+1

@lisa,你應該恢復你的編輯並提出一個新的問題。現在沒有任何下面的答案有任何上下文。 – dansalmo

+0

似乎lisa創建了一個新的襪子傀儡帳戶http://stackoverflow.com/questions/17057641/creating-lists-from-text-file-using-pandas-in-python。 – dansalmo

回答

4

使用戶更容易對自己,用pandas

import pandas 
df = pandas.read_csv("data.txt") 

如果您需要明確地告訴熊貓一個特定的值是NaN,只是把它傳遞給讀者

df = pandas.read_csv("data.txt", na_values=["NAN"]) 

或者如果你想跳過有問題的線路

df = pandas.read_csv("data.txt", error_bad_lines=False) 

要獲得第1行:

row1 = df.irow(0) 

要獲得第1列:

col1 = df.icol(0) 
+2

熊貓是完美的,你打敗了我,+1,但你不需要指定分隔符,熊貓'read_csv'「嗅探」文件的分隔符是什麼! –

+0

@RyanSaxe好吧,更新反映(加我拼寫錯誤「\ t」開機:P) –

+0

@Jeff Tratner謝謝我,我接受了你的答案。那我該如何提取只有第一行或第一列? – lisa

1

如果你有確定的確定方式是什麼構成了電池可以使用字符串比較,而忽略那些無效值值。

如果你的目的是要忽略的是浮動 你可以這樣做以下Python不認爲這些值:

cell = <cell_value> 
try: 
    f = float(cell) 
    # store f somewhere 
except ValueError: 
    # ignore cell, or may be log this 
    pass 
0

這爲我工作(將所有細胞在行或行成一列表):

import csv 
with open ('data.txt', 'r') as f: 
    for row in csv.reader(f,delimiter='\t'): 
     print row # prints a list of entries for current row. 
0

csv.reader()返回產生每次迭代(即線)列的陣列的迭代器。

簡單地說,這是足以讓你的data.txt的第一行作爲一個列表:

import csv 
with open ('data.txt') as f: 
    first_row = csv.reader(f, delimiter='\t') 

看樣子你也想列表中的元素轉換爲十進制類型,它可以可以使用map(...)float(...)來完成。

例如爲:

first_row = map(float, first_row) 

如果列表中包含文本「南」,float()將其轉換爲特殊值nan沒有太多的干預。

例如爲:

>>> float("NaN") 
nan 
相關問題