如何在python中将文本文件的第一行转换为列表?我想在转换成列表时逃避NaN。
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 :(得分:4)
让自己更轻松,使用pandas:
import pandas
df = pandas.read_csv("data.txt")
如果您需要明确告诉pandas特定值为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)
答案 1 :(得分:1)
如果您确定如何确定单元格的无效值,您可以使用字符串比较并忽略这些值。
如果您的目的是忽略Python不认为是浮动的那些值 你可以做类似下面的事情:
cell = <cell_value>
try:
f = float(cell)
# store f somewhere
except ValueError:
# ignore cell, or may be log this
pass
答案 2 :(得分: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.
答案 3 :(得分:0)
csv.reader()
返回一个迭代器,每次迭代产生一个列数组(即行)。
简而言之,这足以让您将 data.txt 的第一行作为列表:
import csv
with open ('data.txt') as f:
first_row = csv.reader(f, delimiter='\t')
您似乎还希望将列表元素转换为十进制类型,可以使用map(...)
和float(...)
来完成。
e.g:
first_row = map(float, first_row)
如果列表中包含“NaN”文本,float()
会将其转换为特殊值nan
,而无需太多干预。
e.g:
>>> float("NaN")
nan