2017-01-15 9 views
-2

私はcsvファイルをPythonにロードします。 csvファイルには、ランダムな学生数とランダムな割り当て数が含まれています。 csvファイルのすべての行を読み込む - Python

は、私はPythonは、ヘッダと最初の列(学生の名前)を削除すると、これは私のコードです:

with open("testgrades.csv") as f: 

ncols = len(f.readline().split(',')) 
nrows = sum(1 for row in f) 
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1)) 
print(document1) 

コードは列ごとに動作しますが、私は1つまたは複数の行を追加した場合は処理できませんcsvファイルには?

私のCSVファイル:パイソンから

csv

そして出力:

Output

+1

このコードを実行した場合、CSVの数行と予想される出力と実際に何が起こるかを示してください。また、インデントが正しくない場合は、修正する必要があります。 – ayhan

+0

'' nrows'を計算するのは何ですか?それはうまくいくはずです。入力と期待される出力はここで必要です... –

答えて

-2

Pythonは読み書きCSVファイルのための特別なモジュールを持っていPython CSV

のPython 2

import csv 
with open('testgrades.csv', 'rb') as f: 

Pythonの3

import csv 
with open('testgrades.csv', newline='') as f: 
+1

'' rb ''モードはPython 2でしか動作しません... –

+0

@ Jean-FrançoisFabreあなたは本当に正しいですが、元のポスターはPythonのバージョンを一度も言及しませんでした。 – Sarvex

+0

あなたは大丈夫ですか? "open( 'testgrades。これは= TypeErrorと言っています:「str」ではなくバイト様オブジェクトが必要ですか? – Mikkel

0

あなたcsvイメージが台無しにスプレッドシートの画像のように見えます。ファイルcsvのコピーではありません。これはプレーンテキストです。そのテキストをコピーして質問に貼り付けることができます。

Outputイメージは配列であり、番号はcsvイメージの最初の6行に対応します。

質問が不明です。私はあなたがスプレッドシートに最後の2行を追加したと思われ、それらをnumpyにロードする際に問題が発生しています。私は普及したシートイメージのそれらの番号に間違って何も見ることができません。しかし、実際のcsvファイルのコンテンツを表示すると、問題が特定される可能性があります。実際には、追加した行を実際にcsvファイルに書き込んでいない可能性があります。修正インデントと

あなたのコードサンプルは、次のとおりです。

with open("testgrades.csv") as f: 
    ncols = len(f.readline().split(',')) 
    nrows = sum(1 for row in f) 
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1)) 
print(grades) 

私は列の数を決定するためにncolsを使用して見ることができます。 usecolsパラメータには、列の明示的なリストが必要です。all-but-firstの並べ替えではありません。あなたはまた、その番号を普通のloadtxt(またはgenfromtxt)から得ることができました。

しかし、なぜnrowsを計算するのですか?あなたはそれを使用していないようです。 loadtxtでは必要ありません。 genfromtxtは、読み取る行数を制限する必要がある場合は、max_rowsパラメーターを許可します。

関連する問題