今、変数空白区切り文字と欠落/空白値を持つテーブルを読み込もうとしています。私はPythonでテーブルを読んで、CSVファイルを生成したいと思います。私はNumPy、Pandas、CSVライブラリを試しましたが、残念ながら変数空間と欠けているデータが一緒になってテーブルを読むことが不可能に近づいています。私は読んしようとしているファイルはここに添付されています goo.gl/z7S2MoPythonで変数の空白区切りテーブルを読む
は誰のpython
今、変数空白区切り文字と欠落/空白値を持つテーブルを読み込もうとしています。私はPythonでテーブルを読んで、CSVファイルを生成したいと思います。私はNumPy、Pandas、CSVライブラリを試しましたが、残念ながら変数空間と欠けているデータが一緒になってテーブルを読むことが不可能に近づいています。私は読んしようとしているファイルはここに添付されています goo.gl/z7S2MoPythonで変数の空白区切りテーブルを読む
は誰のpython
に溶液で私を助けることができる場合numpyのモジュールがする機能を持っている本当にお願い申し上げただそれは、(最後の行を参照)ん:
import numpy as np
path = "<insert file path here>/infotable.txt"
# read off column locations from a text editor.
# I used Notepad++ to do that.
column_locations = np.array([1, 38, 52, 61, 70, 78, 98, 111, 120, 127, 132])
# My text editor starts counting at 1, while numpy starts at 0. Fixing that:
column_locations = column_locations - 1
# Get column widths
widths = column_locations[1:] - column_locations[:-1]
data = np.genfromtxt(path, dtype=None, delimiter=widths, autostrip=True)
をあなたの正確なユースケースに応じて、列幅を取得するために別の方法を使用するかもしれませんが、あなたのアイデアを得ます。 dtype=None
は、numpyによって確実にデータ型が決定されます。これは引数dtype
を省略したのとは非常に異なります。最後に、autostrip=True
は先頭と末尾の空白を削除します。
出力(data
)はstructured arrayです。
デリミタは2つ以上のスペース(1つ以上のスペースではなく)にする必要があります。ここソリューションです:
import pandas as pd
df = pd.read_csv('infotable.txt',sep='\s{2,}',header=None,engine='python',thousands=',')
結果:
>>> print(df.head())
0 1 2 3 4 5 \
0 ISHARES MORNINGSTAR MID GROWTH ETP 464288307 3892 41700 SH
1 ISHARES S&P MIDCAP 400 GROWTH ETP 464287606 4700 47600 SH
2 BED BATH & BEYOND Common Stock 075896100 870 15000 SH
3 CARBO CERAMICS INC Common Stock 140781105 950 7700 SH
4 CATALYST HEALTH SOLUTIONS IN Common Stock 14888B103 1313 25250 SH
6 7 8 9
0 Sole 41700 0 0
1 Sole 47600 0 0
2 Sole 15000 0 0
3 Sole 7700 0 0
4 Sole 25250 0 0
>>> print(df.dtypes)
0 object
1 object
2 object
3 int64
4 int64
5 object
6 object
7 int64
8 int64
9 int64
dtype: object
(それは非常に難しいだろう)、「固定幅」の列も空白値で区切られた変数ではない空白に見えます。 フィールド幅ごとにサブストリングを使用し、トリミングする必要があります。 –
固定幅であるかどうかを確認しようとしていますが、テーブルをExcelで読み込もうとしていて、テーブルが正しく取り込まれていないために固定幅であることを示唆しています。 –
Excelが間違っていた私の目は私に教えてくれます;-) –