pandas read_csv()
の0.17以前の古いバージョンは、ヘッダー行を推測するためにブール値_header=True
_/False
を渡すことをどのように解釈しましたか?
ヘッダー付きのCSVデータがあります:
_col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0
_
header=True
_で読み取った場合すなわち、df = pandas.read_csv('test.csv', sep=';', header=True)
、
次のデータフレームが得られます。
_ 1.0 10.0 100.0
0 2 20 200
1 3 30 300
_
pandasはsecond row( "row 1")を列名に使用したことを意味します(推測される名前は '1.0'、 '10.0'および '100.0'です) 。
header=False
_で読み取った場合_df = pandas.read_csv('test.csv', sep=';', header=False)
_
以下を提供します:
_ col1 col2 col3
0 1 10 100
1 2 20 200
2 3 30 300
_
つまり、pandasは、ヘッダーがないことを明示的に書いたにもかかわらず、最初の行( "row 0")をヘッダーとして使用しました。
この動作は私には直観的ではありません。誰かが何が起こっているのか説明できますか?
pandasどの行がヘッダー行であるかを伝えています。False
を渡すことで、これは0
に評価されます。 、True
を渡すと1
と評価されるため、2行目を読み取ります。None
を渡すと、ヘッダー行がないとみなされ、順序値が自動生成されます。
In [17]:
import io
import pandas as pd
t="""col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0"""
print('False:\n', pd.read_csv(io.StringIO(t), sep=';', header=False))
print('\nTrue:\n', pd.read_csv(io.StringIO(t), sep=';', header=True))
print('\nNone:\n', pd.read_csv(io.StringIO(t), sep=';', header=None))
False:
col1 col2 col3
0 1 10 100
1 2 20 200
2 3 30 300
True:
1.0 10.0 100.0
0 2 20 200
1 3 30 300
None:
0 1 2
0 col1 col2 col3
1 1.0 10.0 100.0
2 2.0 20.0 200.0
3 3.0 30.0 300.0
[〜#〜] update [〜#〜]
バージョン0.17.0
以降、これにより TypeError
が発生します。