尝试从网站获取表格(ValueError:如果使用所有标量值,则必须传递索引)

问题描述 投票:0回答:1

我正在尝试创建一个自动从网站(维基百科)获取表格的功能,对其进行一些清理然后显示它,我的前两个表格一切正常,但第三个表格给我带来了一些麻烦。

这是定义函数的代码:

def createTable(url, match):
    data= pd.read_html(url, match= match)
    name= data[0]["Name"]
    origin= data[0]["Origin"]
    type_= data[0]["Type"]
    number= data[0]["Number"]
    df= pd.DataFrame({"Name": name, "Origin": origin, "Type": type_, "Number": number})
    df.replace("?", np.nan, inplace=True)
    df['Number']= df['Number'].replace(to_replace={r"\(.*\)": "", r"\[.*\]": ""}, regex=True)
    return df

这是正在工作的功能:

df_avIT= pd.DataFrame()
df_avIT= createTable("https://en.wikipedia.org/wiki/List_of_equipment_of_the_Italian_Army",
            "125 To be upgraded and remain in service until 2035")
df_avUK= pd.DataFrame()
df_avUK= createTable("https://en.wikipedia.org/wiki/List_of_equipment_of_the_British_Army",
            "Challenger 2")
df_avFR= pd.DataFrame()
df_avFR= createTable("https://en.wikipedia.org/wiki/List_of_equipment_of_the_French_Army",
            "AMX Leclerc")

正如我所说,前两个完全没有问题,但是当我尝试第三个时,它返回 ValueError: If using all scalar value, you必须传递一个索引。 我很清楚代码不是很好,我正在尝试改进它,但这个问题阻止了我,我找不到有效的解决方案,即使我在各个论坛中搜索与我的类似问题。 (如果我的英语不好,我很抱歉,如果你不明白什么,请告诉我,我会尽力解释更多)。

python pandas dataframe user-defined-functions valueerror
1个回答
0
投票

你的脚本并不总是产生系列,你有时有DataFrames,你可以尝试

squeeze

name= data[0]["Name"].squeeze()
origin= data[0]["Origin"].squeeze()
type_= data[0]["Type"].squeeze()
number= data[0]["Number"].squeeze()
© www.soinside.com 2019 - 2024. All rights reserved.