我正在尝试从 HTML 页面抓取表格并将数据导入 Pandas 数据框。数据来源提供加拿大议会的投票记录。此代码成功导入数据:
import pandas as pd
dfs = pd.read_html('https://www.ourcommons.ca/Members/en/votes/43/2/32',header=0)
for df in dfs:
print(df)
为了让它更清晰、更易读,我重置了列标题:
df.columns = ['Member','Party','Vote','Paired']
然后我计算选票。现在,作为背景,议会通常有大约 330 票。对法案的投票记录为“是”,而反对票为“否”。但是,在这种情况下, .value_counts 只给了我反对票:
df['Vote'].value_counts().to_frame()
Vote
Nay 118
我假设是因为在这种特殊情况下,记录的第一票是“反对”。但是,如果特定投票以“是”开头(如本例中:https://www.ourcommons.ca/Members/en/votes/43/2/41),则 .value_counts() 将只计算“是”。 有谁知道为什么会这样? 谢谢,
答案 0 :(得分:1)
使用时:
for df in dfs:
df.columns = ['Member','Party','Vote','Paired']
它将 df 设置为列表的最后一个元素(设置 df 21 次)。正如 InspectorG4dget 所说,列表中的最后一个 DF 只是反对票。