python - 将列表中的unicode转换为dataframe

时间:2017-03-14 15:21:22

标签: python pandas dataframe unicode

我正在使用API​​来获取一些数据。返回的数据是Unicode(不是字典/ json对象)。

# get data
data = []
for urls in api_call_list:
    data.append(requests.get(urls))

数据如下所示:

>>> data[0].text
u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Taylor Swift;33100;0.83;0.20\r\n'

>>> data[1].text
u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Rihanna;28100;0.76;0.33\r\n'

我想把它放在DataFrame的国家,名人,歌曲,音量,CPP和索引作为列名。

首先,我尝试将其拆分为\r\n,如下所示:

x = [i.text.split('\r\n') for i in data] 

得到了:

[[u'Country;Celebrity;Song Volume;CPP;Index',
  u'us;Taylor Swift;33100;0.83;0.20',
  u''],
 [u'Country;Celebrity;Song Volume;CPP;Index',
  u'us;Rihanna;28100;0.76;0.33',
  u'']]

不知道从哪里开始。 。 。

1 个答案:

答案 0 :(得分:3)

您可以使用pandas.read_csv数据作为数据框列表进行读取,然后将它们连接起来:

# if you use python 2 change this to // from io import BytesIO and use BytesIO instead
from io import StringIO     
import pandas as pd

pd.concat([pd.read_csv(StringIO(d), sep = ";") for d in data])

enter image description here

由于您的实际数据是回复列表,您可能需要首先访问该文本:

pd.concat([pd.read_csv(StringIO(d.text), sep = ";") for d in data])
data = [u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Taylor Swift;33100;0.83;0.20\r\n', 
        u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Rihanna;28100;0.76;0.33\r\n']