我如何分析python中的列?

时间:2012-05-25 16:37:05

标签: python

我有一个制表符分隔表,它有多列(1500)和几行(10)。

基本上我如何让我的程序看到列而不是行?我需要根据其中的内容来计算和组织列。

一个例子是计算列中没有' - '的条目数。

我认为itertools.groupby可能是我正在寻找的但我不知道语法或者它是否是正确的东西。

我已经学习编程/ python两周了,所以我不知道该怎么做。谢谢你能给我的任何帮助。

6 个答案:

答案 0 :(得分:2)

您可能需要查看csvreader doc

拥有csv关键字后,您会在Google上找到大量关于您想要做的点击。

This one for example

答案 1 :(得分:1)

如果您熟悉R(即使您不熟悉),我建议使用pandas库。它为python带来了R中的DataFrame结构,它允许您按行或列(以及许多其他内容)轻松地操作表。

答案 2 :(得分:0)

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。您可以相应地调整您的行动目标。

假设每行都有你想要的列数,并包含每行的数据。

答案 3 :(得分:0)

如果文件不是太大(听起来不是这样),那么最简单的方法就是将整个内容读入表中,然后从那里开始。 E.g:

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)

(假设您有一个固定数量的列,并且所有行都具有该列数。)

答案 4 :(得分:0)

您肯定希望使用上下文管理器(with)打开文件。然后,您想要遍历文件的行(即“行”)。你摆脱了一些空白字符,看看是否留下了什么。然后在这些位置拆分行,在那里出现一个特定的分隔符,它为你提供了这一行中的“字段”:

with open(filename) as f:
    for line in f:
        line = line.strip()
        if line:
            tokens = line.split(delimiter)

这是一个强大的概念。只需将其与您的分析/评估代码合并即可。

答案 5 :(得分:0)

谢谢大家的帮助!我尝试了他们每个人,他们都按照描述做了,并且可能被合并到我的代码中(如果我在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

然后我可以对每个列执行操作,只需将每个列作为包含原始制表符分隔表的每列中的条目的列表。