通过StringIO将二进制数据加载到数据帧中

时间:2017-08-04 02:10:32

标签: python-3.x pandas dataframe

我正在做urlread,我得到以下数据:

text
b'Date,Open,High,Low,Close,Adj Close,Volume\n2011-10-04,4.936250,5.262500,4.912500,5.262500,5.262500,162400\n2011-10-05,5.441250,5.705000,5.431250,5.673750,5.673750,71200 ....

type(text)
<class 'bytes'>

我想将它存储在数据框中,以便从标题名称创建独立列:

Date,Open,High,Low,Close,Adj Close,Volume
2011-10-04,4.936250,5.262500,4.912500,5.262500,5.262500,162400
2011-10-05,5.441250,5.705000,5.431250,5.673750,5.673750,71200

我想将Date列解析为datetime。

我尝试了以下内容:

import pandas as pd
import io
data = pd.read_fwf(io.StringIO(text.decode("utf-8")))

但是上面给出了形状2x1而不是形状2x7的数据框,其中每一行都显示为字符串

1 个答案:

答案 0 :(得分:1)

pd.read_fwf读取固定格式化的行。如果您的列的大小是常规的,那么这是有意义的。

但是,在您的情况下,您的数据似乎是csv剪辑。您应该使用pd.read_csv代替:

pd.read_csv(io.StringIO(text.decode("utf-8")))