1

これは私の (省略された) テキスト ファイルです (書式設定は投稿で失​​われる可能性があります):

date    close   volume          open    high    low
12:21   82.94   "14,748,136"    83.37   83.4    82.73

.txt ファイルを Python に読み込むと、リストになり、それを分割します。リストを取得して列ベクトルに並べ替えるにはどうすればよいですか? どんな助けでも大歓迎です。

4

4 に答える 4

0

pandas データフレームを使用できます。(これがタブ区切りファイルであることを願っています)

import pandas as pd
import numpy as np
import csv


df = pd.read_csv('text.txt', sep='\t', header=None)
print df

その後、列の名前を変更できます。

于 2013-11-07T04:00:48.540 に答える
0

おそらく、値の少なくとも 1 つを引用符で囲んでいるとすれば、値内にスペースが現れる可能性があります。だから、あなたはできませんsplit()

区切り文字がスペースで、最初の空白がスキップされる CSV のファンキーな方言として解析できます。

with open('textfile') as f:
    rows = list(csv.reader(f, delimiter=' ', skipinitialspace=True)

これにより、あなたとすべての見積もりが自動的に処理されます。

ただし、少なくともいくつかのケースでは、このような列データは、次のようにまったく分離されていない値を持つ可能性があります。

date    close   volume          open    high    low
12:21   82.94   "14,748,136"    83.37   83.4    82.73
12:22   93213.12"15,222,139"    93201.1493333.3390213.94

その場合、適切な列位置で行をスライスすることによってのみ解析できます。運が良ければ、これにヘッダーを使用できます。それ以外の場合は、手動で指定する必要があります。あなたは不運だと思いますので、次のようにします。

columns = 0, 7, 15, 31, 39, 47, None
def columnize(line):
    return [line[columns[i]:columns[i+1]].rstrip() for i in range(len(columns)-1)]
with open('textfile') as f:
    rows = map(columnize, f)
于 2013-11-07T01:12:00.407 に答える
0
[[x for i,x in enumerate(text.split()) if (i+j)%colNumber==0 ] 
for j in range(colNumber)]

これには、列番号がわかっていることと、テキスト ファイルがテーブルとしてフォーマットされていることが必要です。例えば:

text='''a   b   c
1   2   4
1   2   4
1   2   4
'''

colNumber=3
table=[[x for i,x in enumerate(text.split()) if (i+j)%colNumber==0 ] 
for j in range(colNumber)]

print(table)

結果:

[['a', '1', '1', '1'], ['c', '4', '4', '4'], ['b', '2', '2', '2']]
于 2013-11-07T01:13:14.167 に答える