如何将文本文件的第一行转换为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)
如何将文本文件的第一行转换为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)
让自己更轻松,使用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)
csv.reader()
返回一个迭代器,每次迭代产生一个列数组(即行)。
简单地说,这足以让您将data.txt的第一行作为列表:
import csv
with open ('data.txt') as f:
first_row = csv.reader(f, delimiter='\t')
看来您还想将列表元素转换为十进制类型,这可以使用map(...)
and来完成float(...)
。
例如:
first_row = map(float, first_row)
如果列表包含文本“NaN”,float()
则将其转换为特殊值nan
而无需太多干预。
例如:
>>> float("NaN")
nan
如果您有确定的方法来确定单元格的无效值是什么,您可以使用字符串比较并忽略这些值。
如果您的目的是忽略那些 Python 不认为是浮点数的值,您可以执行以下操作:
cell = <cell_value>
try:
f = float(cell)
# store f somewhere
except ValueError:
# ignore cell, or may be log this
pass
这对我有用(将一行或一行上的所有单元格放入列表中):
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.