1
Pandas : populate column with if condition not working as expectedのテキストデータをデータフレームに読み込もうとしています。テキストデータをPythonのpandasデータフレームに読み込むことができません
dftxt = """
0 1 2
1 10/1/2016 'stringvalue' 456
2 NaN 'anothersting' NaN
3 NaN 'and another ' NaN
4 11/1/2016 'more strings' 943
5 NaN 'stringstring' NaN
"""
from io import StringIO
df = pd.read_csv(StringIO(dftxt), sep='\s+')
print (df)
しかし、私は次のエラーを取得しています:私のコードがある
Traceback (most recent call last):
File "mydf.py", line 16, in <module>
df = pd.read_csv(StringIO(dftxt), sep='\s+')
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 646, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 401, in _read
data = parser.read()
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 939, in read
ret = self._engine.read(nrows)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 1508, in read
data = self._reader.read(nrows)
File "pandas/parser.pyx", line 848, in pandas.parser.TextReader.read (pandas/parser.c:10415)
File "pandas/parser.pyx", line 870, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:10691)
File "pandas/parser.pyx", line 924, in pandas.parser.TextReader._read_rows (pandas/parser.c:11437)
File "pandas/parser.pyx", line 911, in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:11308)
File "pandas/parser.pyx", line 2024, in pandas.parser.raise_parser_error (pandas/parser.c:27037)
pandas.io.common.CParserError: Error tokenizing data. C error: Expected 4 fields in line 5, saw 6
が、私は6つのフィールドが誤って読まされているかを理解することはできません:Expected 4 fields in line 5, saw 6
。問題はどこでどのように解決できますか?問題は、あなたの区切りである
3 NaN 'and another ' NaN
1 2 3 4 5 6
-
非常にうまく動作します。なぜ 'engine = 'python''が必要ですか?コードもこのオプションがなくてもうまくいくようです。 – rnso
@rnso修正してください。デフォルトでは、Cエンジンはそれをサポートしていないと思われるので、 'python'エンジンは可変幅区切り文字に使用されます。それはまだ警告をスローします。明示的なものは暗黙的なものよりも優れています! (Zen of Pythonを覚えておいてください) –