web-dev-qa-db-ja.com

pandas read_csvが最初の行を列名のヘッダーとして扱うことを防ぐ

_pandas DataFrame_を使用して_pd.read_csv_を読み込んでいます。最初の行をデータとして保持したいのですが、列名に変換され続けます。

  • _header=False_を試しましたが、これで完全に削除されました。

(入力データに関する注意:文字列(st = '\n'.join(lst))をファイルのようなオブジェクト(io.StringIO(st))に変換し、それからcsvを構築しますファイルオブジェクト。)

10
R.M.

header=NoneFalseintに型昇格されて0になります( docs 重点鉱山を参照):

header:intまたはintのリスト、列名として使用するデフォルトの「推論」行番号、およびデータの開始。デフォルトの動作では、名前が渡されなかった場合は0に設定され、それ以外の場合はNoneに設定されます。既存の名前を置き換えることができるように、明示的にheader = 0を渡します。ヘッダーは、列のマルチインデックスの行の位置を指定する整数のリストにすることができます。 [0,1,3]。指定されていない介在する行はスキップされます(たとえば、この例の2はスキップされます)。 skip_blank_lines = Trueの場合、このパラメーターはコメント行と空行を無視するため、header = 0はファイルの最初の行ではなくデータの最初の行を示します。

最初にheader=0を使用すると、動作の違いを確認できます。

In [95]:
import io
import pandas as pd
t="""a,b,c
0,1,2
3,4,5"""
pd.read_csv(io.StringIO(t), header=0)

Out[95]:
   a  b  c
0  0  1  2
1  3  4  5

Noneで:

In [96]:
pd.read_csv(io.StringIO(t), header=None)

Out[96]:
   0  1  2
0  a  b  c
1  0  1  2
2  3  4  5

最新バージョン0.19.1では、これによりTypeErrorが発生することに注意してください。

In [98]:
pd.read_csv(io.StringIO(t), header=False)

TypeError:boolをヘッダーに渡すことは無効です。列名を構成する行を指定するには、header = Noneをヘッダーなし、header = intまたはintのリストのように使用します。

17
EdChum

パラメーターheader=Noneから read_csv が必要だと思います:

サンプル:

import pandas as pd
from pandas.compat import StringIO

temp=u"""a,b
2,1
1,1"""

df = pd.read_csv(StringIO(temp),header=None)
print (df)
   0  1
0  a  b
1  2  1
2  1  1
6
jezrael