csvインポートパンダ中に行をスキップ


97

を使用して.csvファイルをインポートしようとしpandas.read_csv()ていますが、データファイルの2行目(0インデックスの場合、インデックス= 1の行)をインポートしたくありません。

コマンドで使用される引数があいまいなため、インポートする方法がわかりません。

パンダのウェブサイトから:

skiprows :リストのようなまたは整数

ファイルの先頭でスキップする行番号(0から始まる)またはスキップする行数(int)。

skiprows=1引数を入力した場合、最初の行をスキップするか、インデックス1の行をスキップするかはどのようにしてわかりますか?


2
私はそれが「リストのようなまたは整数」であることができると述べ、それからあなたに2つのオプション(最初に行をスキップするか#行をスキップする)を与え、それをリストに与えれば[1]それは単に行をスキップすると思います1(2行目)。整数(たとえば10)を指定した場合、最初の10行はスキップされます。
Ffisegydd 2013

1
うまくいきました。どうもありがとう。インデックスとintをどのように区別するのか疑問に思いました。[]が答えです。
thosphor 2013

回答:


144

あなたは自分で試すことができます:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

そうです、インデックスが角括弧の中に指定されていることを知る必要があるだけです[]
thosphor 2013

11
Python 3の場合 from io import StringIO
Dima Lituiev 2016年

^インポートする必要はありませんpd.compat.StringIO 。直接としてアクセスできます。
cs95

30

コメントする評判はまだありませんが、参考のためにアルコの回答に追加したいと思います。

ドキュメントから:

skiprows:ファイル内のスキップする行の番号のコレクション。最初のn行をスキップする整数にすることもできます


14

csvファイルの読み取り中にスキップローを実行しているときに同じ問題が発生しました。私はskip_rows = 1を提供していましたが、これは機能しません

簡単な例は、csvファイルの読み取り中にスキップ行を使用する方法を示しています。

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

1

これらの回答はすべて1つの重要な点を欠いています。n番目の行はファイルのn番目の行であり、データセットのn番目の行ではありません。USGSから時代遅れのストリームゲージデータをダウンロードする状況があります。データセットの先頭は「#」でコメント化されています。その後の最初の行はラベルです。次に、日付タイプを説明する行が続き、データ自体が最後になります。コメント行がいくつあるかわかりませんが、最初の2、3行はわかります。例:

-----------------------------警告-------------------- --------------

この米国地質調査データベースから取得したデータの一部

ディレクターの承認を受けていない可能性があります。... agency_cd site_no datetime tz_cd 139719_00065 139719_00065_cd

5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A

n番目の行だけでなくn番目の行も自動的にスキップする方法があったらいいですね。

メモとして、私は私の問題を修正することができました:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)


-8

また、ファイルが実際にCSVファイルであることを確認してください。たとえば、.xlsファイルがあり、単にファイル拡張子を.csvに変更した場合、ファイルはインポートされず、上記のエラーが発生します。これが問題であるかどうかを確認するには、ファイルをExcelで開くと次のように表示されます。

「「Filename.csv」のファイル形式と拡張子が一致しません。ファイルが破損しているか、安全でない可能性があります。そのソースを信頼できない場合は、開かないでください。それでも開きますか?」

ファイルを修正するには、Excelでファイルを開き、[名前を付けて保存]をクリックします。保存するファイル形式を選択し(.cvsを使用)、既存のファイルを置き換えます。

これは私の問題であり、エラーを修正しました。


9
これはあなたの問題であったかもしれませんが、それは質問とは関係がなく、それに答えようとするものでもありません。それは単にあなたが経験した他のいくつかの追加の問題を説明します。「ノートパソコンも充電することを忘れないでください。私のバッテリーはなく、すべての変更を失いました。それが私の問題でした」
JC Rocamonde
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.