【发布时间】:2018-09-25 08:25:35
【问题描述】:
我在使用 Python 中的数据框时遇到问题。
我只想要那些带有特定文本(“Grado en”)的列,但我收到错误:
当没有 NA 或 NaN 时,无法使用包含 NA / NaN 值的向量进行索引。
如果我使用选项na=False,它将返回一个空数据框。我已经寻找解决方案,但我找不到任何东西。
这是我的代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import pandas as pd
list_of_titles_graus = []
html_graus = urlopen("https://www.universidadviu.es/grados-online") # Insert your URL to extract
bsObj_graus = BeautifulSoup(html_graus.read());
for link in bsObj_graus.find_all('div'):
list_of_titles_graus.append((link.span))
df_graus = pd.DataFrame({'title': list_of_titles_graus})
#Depuramos para que nos queden solo los titulos de los grados.
graudep = df_graus.dropna() #Eliminamos N/As
graudep = graudep.drop_duplicates() # Eliminamos duplicados.
#Check if there are NA or NaN
graudep.isnull().sum().sum()
graudep.isna().sum().sum()
#This gives me the error.
graudep = graudep[(graudep['title'].str.contains("Grado en"))]
KeyError: '[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan...] not in index'
#This doesn't do anything.
graudep = graudep[(graudep['title'].str.contains("Grado en", na=True))]
#This returns an empty dataframe.
graudep = graudep[(graudep['title'].str.contains("Grado en", na=False))]
我想要的输出如下:
207 Grado en Psicología
221 Grado en Educación Primaria
233 Grado en Derecho
245 Grado en Traducción e Interpretación
257 Grado en Ingeniería Informática
269 Grado en Relaciones Internacionales
281 Grado en Trabajo Social
293 Grado en Administración y Dirección de E...
306 Grado en Educación Infantil
318 Grado en Criminología y Ciencias de la S...
330 Grado en Musicología
342 Grado en Economía
提前致谢
【问题讨论】:
-
这对我不起作用...我做错了吗?
-
你是对的。 na=True 返回所有行
标签: html python-3.x pandas parsing beautifulsoup