2017-08-30 10 views
1

一時ファイルをpandasデータフレームにロードしようとしてエラーが発生しました。後で使用するために、解析されたデータを一時ファイルからデータフレームに取得する方法が不明です。一時ファイルからデータフレームを作成

line = [] 
for x in readMe: 
    line.append(" ".join(x.split())) 
with tempfile.NamedTemporaryFile() as temp: 
    for i in line: 
     " ".join(i.split(None)) 
     temp.write("%s\n" % i) 
    df = pd.read_csv(temp.name, sep=' ', names=curves, skiprows=dataStart, header=None) 

トレースバック(最後の最新の呼び出し): ファイル "C:/ LAS Load.py"、42行、 中... リターンFUNC(* argsを、** kwargsから) はTypeError: 'str'ではなく、バイトのようなオブジェクトが必要です

答えて

0

私はtemp.nameの前に 'file://'を付けると思います。インデントを解除した後、2つのタブストップでdfを割り当てます。 i.split(None)は奇妙で、[i]のように見え、' '.join([i])は副作用がありません。たぶんコピーアンドペーストのやっかい?

+0

あなたは最近、単一のタブストップでインデントしていないので、今度は 'for'の下に' for'と 'df ='があります。この問題は、最初に 'with'を終了したいので、そのファイルを' read_csv() 'しようとする前に一時ファイル記述子を' close() 'する機会があります。 –

+0

私はtempfileが削除され、それ以外のものにはアクセスできないと考えています。 – JRod

+0

また、 'temp.name'ではなく' temp'デスクリプタを渡すこともできます。あなたが最初にそれの前に 'fseek 'する必要があるかどうかは分かりません。 –

0

readMeには、特にどのようなタイプのものが含まれているのか表示されていません。i可能であれば、python3でこれを実行してください。そうでない場合は、type(i)のような詳細を表示し、temp.write('hello')という名前を付けてファイル記述子が書き込み可能であることを確認してください。 '%s'%iは基本的にstr(i)を使用しています。おそらく、私たちが探しているのはi.encode('utf8')、またはtemp file encodingです。

関連する問題