我正在尝试使用python进行web抓取。当我试图创建一个数据帧来存储包含提取信息的变量时,它显示“ValueError:如果使用所有标量值,则必须传递索引”。我已经通过尝试索引{'trade\u name':trade\u name},index=[0])
查看了此网站中的其他相关帖子,但仍然无法解决此问题。请帮忙。
import pandas as pd
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
url = 'https://www.medindia.net/doctors/drug_information/abacavir.htm'
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
drug = soup.find(class_='mi-container__fluid')
print(drug)
# whole page contain drug content
items = drug.find_all(class_='report-content drug-widget')
print(items)
# extract drug information from drug content into individual variable
trade_name = print(items[0].find(class_='drug-content').get_text())
function = print(items[1].find(class_='drug-content').get_text())
Contraindications = print(items[2].find(class_='drug-content').get_text())
Dosage = print(items[3].find(class_='drug-content').get_text())
how_to_use = print(items[4].find(class_='drug-content').get_text())
warnings = print(items[5].find(class_='drug-content').get_text())
storage = print(items[7].find(class_='drug-content').get_text())
drug_stuff = pd.DataFrame(
{
'trade_name':trade_name,
'function': function,
'Contraindications': Contraindications,
'Dosage': Dosage,
'how_to_use':how_to_use,
'warnings':warnings,
'storage':storage,
})
print(drug_stuff)
首先:print()
总是返回无-所以trade_name=print(...)
像trade_name=无
一样工作,你什么也得不到。删除print()
为变量赋值
trade_name = items[0].find(class_='drug-content').get_text()
要创建DataFrame
,您必须使用带有元素的列表-即使您只有一个元素-
'trade_name': [trade_name], ..., 'storage': [storage],
然后它在没有警告的情况下工作。
如果不使用[]
,那么它可能会将trade_name
,存储
中的字符串视为字符列表,并将每个字符放在单独的行中。因为字符串有不同数量的字符,所以它们创建不同数量的行,这可能会产生问题,并显示警告。
顺便说一句:您可以使用获取文本(strip=True)
从文本中删除一些无用的空格、制表符和输入。
import pandas as pd
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
url = 'https://www.medindia.net/doctors/drug_information/abacavir.htm'
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
drug = soup.find(class_='mi-container__fluid')
#print(drug)
# whole page contain drug content
items = drug.find_all(class_='report-content drug-widget')
#print(items)
# extract drug information from drug content into individual variable
trade_name = items[0].find(class_='drug-content').get_text(strip=True)
function = items[1].find(class_='drug-content').get_text(strip=True)
contraindications = items[2].find(class_='drug-content').get_text(strip=True)
dosage = items[3].find(class_='drug-content').get_text(strip=True)
how_to_use = items[4].find(class_='drug-content').get_text(strip=True)
warnings = items[5].find(class_='drug-content').get_text(strip=True)
storage = items[7].find(class_='drug-content').get_text(strip=True)
drug_stuff = pd.DataFrame({
'trade_name': [trade_name],
'function': [function],
'contraindications': [contraindications],
'dosage': [dosage],
'how_to_use': [how_to_use],
'warnings': [warnings],
'storage': [storage],
})
print(drug_stuff)
问题内容: 我在导入带有熊猫的JSON文件时遇到一些困难。 这是我得到的错误: 文件结构是这样简化的: 它来自Coursera的华盛顿大学的机器学习课程。您可以在这里找到文件。 问题答案: 尝试 该文件仅包含键值为标量的键值对。您可以使用将其转换为数据框。 您还可以执行以下操作: 现在数据就是字典。您可以将其传递给数据框构造函数,如下所示:
我在导入带有熊猫的JSON文件时遇到了一些困难。 这是我得到的错误: 文件结构简化如下: 它来自Coursera上的华盛顿大学机器学习课程。你可以在这里找到文件。
我在python上运行了以下代码,以便从一开始就检索各种加密货币收盘价。我已使用以下代码成功运行它: 现在,我将其更改如下(包括完整代码),并得到一个ValueError。 [LN1] [LN2] [LN3] [LN4] 我现在得到以下错误: --------------------------------------------------------------------------- Va
目前,我使用for循环从文件夹中读取csv文件。读取csv文件后,我将数据存储到字典的一行中。当我使用"print(list_of_dfs.dtypes)"打印数据类型时,我会收到: 数据类型:对象日期时间:对象值:float64 ID:int64 ID名称:对象。 请注意,这是一个嵌套字典,每个数据字段中存储了数千个值。我有上面列出的26行结构。我试图将字典行附加到一个数据框中,其中我将只有一行
在我之前的问题之后,一切都很好,但是当列表很长的时候,它显示了这个错误,这是一个简单的d: 有人知道我怎么修吗?先谢谢你。 NB:我从这里的回答中尝试了几种解决方案,但它们对我不起作用
我想对数据帧应用一个函数,该数据帧为原始数据集中的每一列返回几列。apply函数返回包含列和索引的DataFrame,但仍会引发错误ValueError:如果使用所有标量值,则必须传递索引。 我试着设置输出数据帧的名称,将列设置为多索引,并将索引设置为多索引,但都不起作用。 示例:我有这个输入数据帧 apply_函数如下所示: 这会引发错误: ValueError:如果使用所有标量值,则必须传递索