状況
を使用してCSVファイルを読み込むときに、私は次のような特徴を持っているCSVのようなファイルからパンダのデータフレームを作成する必要があります。パンダ:エラー `sep`と` comment`引数
- ファイルで使用される区切り文字は、カンマまたはスペースのどちらでもかまいません。ファイルがどのファイルに含まれるかは事前にわかりません。
- ファイルの先頭には、1つ以上のコメント行があります。この行は、
#
で始まります。
問題
私は、引数sep=None
とcomment='#'
とpd.read_csv
方法でこれに取り組むことを試みました。私の理解では、sep=None
引数は、pandasに区切り文字を自動検出するように指示し、comment='#'
引数は、#
で始まるすべての行が無視すべきコメント行であることをpandasに伝えます。
これらの引数は、個別に使用すると問題なく動作します。しかし、両方を一緒に使用すると、エラーメッセージTypeError: expected string or bytes-like object
が表示されます。次のコード例は、このことを示しています。
from io import StringIO
import pandas as pd
# Simulated data file contents
tabular_data = (
'# Data generated on 04 May 2017\n'
'col1,col2,col3\n'
'5.9,7.8,3.2\n'
'7.1,0.4,8.1\n'
'9.4,5.4,1.9\n'
)
# This works
df1 = pd.read_csv(StringIO(tabular_data), sep=None)
print(df1)
# This also works
df2 = pd.read_csv(StringIO(tabular_data), comment='#')
print(df2)
# This will give an error
df3 = pd.read_csv(StringIO(tabular_data), sep=None, comment='#')
print(df3)
残念ながら、私は本当にエラーをトリガしているものを理解していません。誰でも私にこの問題を解決する助けを与えることができるでしょうか?
この作品のいずれかを選択するための正規表現ですありがとう! 1つのフォローアップの質問:さらに、複数の連続するスペースを区切り文字として認識させることはできますか?私は 'sep = r '(\ s +)|、' 'を使ってみましたが、これは私に奇妙な結果を与えています。 – Xukrao
@Xukrao、確かに、更新された答えを見てください – MaxU