2017-11-19 17 views
0

私は 'バイト'データをパンダのデータフレームに変換したいと思います。バイトデータをpython pandasデータフレームに変換するには?

データは、この(数最初の行)のようになります。

(b'#Settlement Date,Settlement Period,CCGT,OIL,COAL,NUCLEAR,WIND,PS,NPSHYD,OCGT' 
b',OTHER,INTFR,INTIRL,INTNED,INTEW,BIOMASS\n2017-01-01,1,7727,0,3815,7404,3' 
b'923,0,944,0,2123,948,296,856,238,\n2017-01-01,2,8338,0,3815,7403,3658,16,' 
b'909,0,2124,998,298,874,288,\n2017-01-01,3,7927,0,3801,7408,3925,0,864,0,2' 
b'122,998,298,816,286,\n2017-01-01,4,6996,0,3803,7407,4393,0,863,0,2122,998' 

列ヘッダは上部に表示されます。後続の各行はタイムスタンプと数字です。

これを行う簡単な方法はありますか?

@Paulaリビングストンありがとうございました:

s=str(bytes_data,'utf-8') 

file = open("data.txt","w") 

file.write(s) 
df=pd.read_csv('data.txt') 

は多分これを行うことができるの間でファイルを使用せず:

これは動作するようです。

+0

これまでのコードを表示できますか?ありがとうございます。 –

+0

私はこれまでに得たものの上に投稿しました。 – user7188934

答えて

0

[OK]を涼しく、書式をご入力はかなりぎこちないが、次の作品である。

with open('file.txt', 'r') as myfile: 
    data=myfile.read().replace('\n', '') #read in file as a string 

df = pd.Series(" ".join(data.strip(' b\'').strip('\'').split('\' b\'')).split('\\n')).str.split(',', expand=True) 

print(df) 

これは、次を生成します。

    0     1  2 3  4  5  6 7 \ 
0 #Settlement Date Settlement Period CCGT OIL COAL NUCLEAR WIND PS 
1  2017-01-01     1 7727 0 3815  7404 3923 0 
2  2017-01-01     2 8338 0 3815  7403 3658 16 
3  2017-01-01     3 7927 0 3801  7408 3925 0 

     8  9  10  11  12  13  14  15 
0 NPSHYD OCGT OTHER INTFR INTIRL INTNED INTEW BIOMASS 
1  944  0 2123 948  296  856 238   
2  909  0 2124 998  298  874 288   
3  864  0 2122 998  298  816 286  None 

これが機能するためには、あなたのことを確認する必要があります入力ファイルには、完全な行のコレクションのみが含まれています。このため、テストの目的で部分行を削除しました。

データソースがhttp GETリクエストであると言ったので、最初の読み込みはpandas.read_htmlを使用して行われます。

詳細はhereです。特にio(io:strまたはfile-like)に関するセクションに注意してください。

+0

ありがとうございます。私の入力はファイルからではありません。中間段階としてファイルを作成しましたが、ファイルを使用しないようにしたいと考えています。 – user7188934

+0

は、HTTPリクエストからAPIを介してクエリされ、質問 – user7188934

+0

に表示されているバイト形式で取得しますが、jsonには到着しません。このバイト形式で到着します。 – user7188934

関連する問題