我有一个制表符分隔的表,它有多列(1500)和几行(10)。
基本上如何让我的程序查看列而不是行?我需要根据其中的内容来计算和组织列。
一个示例是计算非“-”列中有多少条目。
我认为 itertools.groupby 可能是我正在寻找的,但我不知道语法,或者它是否是正确的。
我已经学习编程/python 两个星期了,所以我不知道该怎么做。谢谢你能给我的任何帮助。
我有一个制表符分隔的表,它有多列(1500)和几行(10)。
基本上如何让我的程序查看列而不是行?我需要根据其中的内容来计算和组织列。
一个示例是计算非“-”列中有多少条目。
我认为 itertools.groupby 可能是我正在寻找的,但我不知道语法,或者它是否是正确的。
我已经学习编程/python 两个星期了,所以我不知道该怎么做。谢谢你能给我的任何帮助。
如果您熟悉 R(即使您不熟悉),我推荐pandas库。它为 python 带来了 R 中的 DataFrame 结构,它允许您轻松地按行或列操作表(以及许多其他内容)。
filename = 'data.txt'
col = 2 # note, this uses a zero-based index.
with open(filename) as f:
for line in f:
target = line.split()[col]
print target
col
这会在文件中找到列filename
并将找到的字符串放入变量target
中。您可以相应地调整您的行动以达到目标。
假设每行将包含您要查找的列数,并且每行都包含数据。
如果文件不是太大(听起来好像不是),那么最简单的方法可能是将整个文件读入一个表格,然后从那里开始。例如:
text = open('some_file.txt').read()
table = [line.split('\t') for line in text.split('\n') if line.strip()]
然后,您使用例如将给定列提取为列表:
col5 = [row[5] for row in table]
您可以使用以下方法将表格从行列表转换为列列表:
columns = [[row[c] for row in table] for c in range(NUM_COLUMNS)
(这假设您有固定数量的列,并且所有行都具有完全相同的列数。)
您肯定想用上下文管理器 ( with
) 打开一个文件。然后,您想遍历文件的行(即“行”)。你去掉一些空白字符,看看有没有剩下的东西。然后在出现特定分隔符的位置拆分行,从而为您提供此行中的“字段”:
with open(filename) as f:
for line in f:
line = line.strip()
if line:
tokens = line.split(delimiter)
这是一个强大的概念。只需将其与您的分析/评估代码合并即可。
谢谢你们每一个人的帮助!我尝试了它们中的每一个,它们都按照描述进行,并且可能会被合并到我的代码中(如果我更擅长 python)。我发现最适合我对列所做的工作是:
table = []
for each_line in homefile:
##doesn't include first line
arr1 = each_line.strip("\n").split('\t')
table.append(arr1)
##created a list of lists(matrix); each row as one entry in table(list)
cols = zip(*table)
##this switches rows and columns
然后,我能够对每一列进行处理,同时将每一列视为一个列表,其中包含来自原始制表符分隔表的每一列的条目。