2

複数の列 (1500) といくつかの行 (10) を持つタブ区切りのテーブルがあります。

基本的に、プログラムに行ではなく列を表示させるにはどうすればよいですか? 列の内容に基づいて、列を数えて整理する必要があります。

1 つの例は、「-」以外の列に含まれるエントリの数を数えることです。

itertools.groupby は私が探しているものかもしれないと思いますが、構文がわからないか、それが正しいかどうかさえわかりません。

私はプログラミング/Pythonを2週間学んでいるので、多くのことを行う方法がわかりません. あなたが私に与えることができるどんな助けにも感謝します.

4

6 に答える 6

2

csvreader docをご覧ください。

csv キーワードを使用すると、Google でやりたいことがたくさんヒットします。

これは例えば

于 2012-05-25T16:40:21.547 に答える
1

R に精通している場合 (そうでない場合でも)、pandasライブラリーをお勧めします。これは R の DataFrame 構造を python にもたらします。これにより、行または列でテーブルを簡単に操作できます (他の多くのことの中でも)。

于 2012-05-25T17:59:38.250 に答える
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の列が検索され、見つかった文字列が variable に配置されますtarget。それに応じてターゲットを絞るためにアクションを調整できます。

すべての行には、探しているのと同じ数の列があり、各行にデータが含まれていると想定されています。

于 2012-05-25T16:40:28.930 に答える
0

ファイルが大きすぎない場合 (そして、それほど大きくないように思えます)、最も簡単な方法は、すべてをテーブルに読み込んでから、そこから移動することです。例えば:

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)

(これは、固定数の列があり、すべての行に正確にその数の列があることを前提としています。)

于 2012-05-25T16:41:46.977 に答える
0

コンテキスト マネージャ ( ) を使用してファイルを開く必要があることは間違いありませんwith。次に、ファイルの行 (「行」) を繰り返します。いくつかの空白文字を取り除き、何かが残っているかどうかを確認します。次に、特定の区切り文字が発生する位置で行を分割します。これにより、この行に「フィールド」が提供されます。

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

これは強力な概念です。分析/評価コードとマージするだけです。

于 2012-05-25T16:45:24.203 に答える
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

次に、各列を元のタブ区切りテーブルの各列のエントリを含むリストとして扱いながら、各列に対して処理を行うことができました。

于 2012-05-29T15:21:29.577 に答える