2016-07-07 2 views
0

У меня есть массив строк Unicode с определенными номерами, которые мне нужно вытащить и сохранить как плавающие. Каким будет самый простой способ итерации через этот массив для низких темпов, текущих темпов и высокой температуры? Код ниже:Итерация через массив Unicode для значений float

import pandas as pd 
from bs4 import BeautifulSoup 
import requests 
import numpy as np 

#Arkansas State Plant Board Weather Web data 
url1 = "http://170.94.200.136/weather/Inversion.aspx" 
response1 = requests.get(url1) 

soup1 = BeautifulSoup(response1.content) 
table1 = soup1.find("table", id="MainContent_GridView1") 

data1 = pd.read_html(str(table1))[0] 

array1 = np.array(data1[0:5]) 
+1

Почему здесь подходит Unicode? – Tim

+2

Это не показывает пример того, что пытался выполнить ОП. – cwallenpoole

ответ

1

Сначала измените свой код, чтобы правильно разобрать заголовок DataFrame.

data1 = pd.read_html(str(table1),header=0)[0]

Затем преобразуйте столбцы, нужно плавать, например.

data1['Low Temp (°F)'] = data1['Low Temp (°F)'].astype(float).

Вы можете выбрать подмножество столбцов в Панде, как это:

data1[['Station','Low Temp (°F)','High Temp (°F)','Current Temp (°F)']].head() 

    Station Low Temp (°F) High Temp (°F) Current Temp (°F) 
0 Arkansas 74.9 88.9 88.9 
1 Ashley 75.0 92.0 91.6 
2 Bradley -9.6 91.5 91.4 
3 Chicot -40.2 -40.1 -40.2 
4 Cleveland 73.7 91.1 91.0 

Затем можно использовать iterrows() для перебора DataFrame.

+0

Когда я пытаюсь преобразовать столбцы в float, я получаю следующее: KeyError: 'Low Temp (\ xc2 \ xb0F)' –

+0

Код работает в Python 3, вы не указали свою версию на Python. Попробуйте переименовать столбцы и удалите символ степени: 'data1.columns = ['Station', 'Low Temp (F)', ...]' – user666