我正在尝试创建一个自动从网站(维基百科)获取表格的功能,对其进行一些清理然后显示它,我的前两个表格一切正常,但第三个表格给我带来了一些麻烦。
这是定义函数的代码:
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必须传递一个索引。 我很清楚代码不是很好,我正在尝试改进它,但这个问题阻止了我,我找不到有效的解决方案,即使我在各个论坛中搜索与我的类似问题。 (如果我的英语不好,我很抱歉,如果你不明白什么,请告诉我,我会尽力解释更多)。
你的脚本并不总是产生系列,你有时有DataFrames,你可以尝试
squeeze
:
name= data[0]["Name"].squeeze()
origin= data[0]["Origin"].squeeze()
type_= data[0]["Type"].squeeze()
number= data[0]["Number"].squeeze()