首页 > 解决方案 > 我为 python 安装了 Pandas,但我似乎无法正确获取数据框引用

问题描述

所以下面的代码是基于一年创建三个数据框。每个数据框基本上是相同的,只是每年都有不同的球员表现数据。但是,数据帧顶部的标题每 20 行左右重复一次。我试图弄清楚如何摆脱它。所以我想,如果我在“播放器”列中搜索每个实例“播放器”在列中重复,我可以找到出现并删除它出现的行。在我的代码结束时,我运行了一个打印函数来查看标题行在数据中出现了多少次,结果是 20 次。我只是想不出删除这些行的方法。

import pandas as pd

year = ["2018", "2019", "2020"]
str = "https://www.pro-football-reference.com/years/{}/fantasy.htm"
url = str.format(year)

urlList = []
for season in year:
    url = str.format(season)
    urlList.append(url)

df2018 = pd.read_html(urlList[0], header=1)
df2019 = pd.read_html(urlList[1], header=1)
df2020 = pd.read_html(urlList[2], header=1)

print(df2020)


print(sum(df2020[0]["Player"] == "Player"))

PS我认为有一种方法可以使用以下形式引用数据框变量:dataframe.variable ??

标签: pythonpandasdataframe

解决方案


这应该有效:

import pandas as pd

year = ["2018", "2019", "2020"]
str = "https://www.pro-football-reference.com/years/{}/fantasy.htm"
url = str.format(year)

urlList = []
for season in year:
    url = str.format(season)
    urlList.append(url)

df2018 = pd.read_html(urlList[0], header=1)
df2019 = pd.read_html(urlList[1], header=1)
df2020 = pd.read_html(urlList[2], header=1)

df2020 = df2020[0]
df2020 = df2020[df2020['Rk'] != 'Rk']

print(df2020.head(50))

它过滤Rk值“Rk”的列,并在创建新数据框时将其排除。我只运行了 2020 年的代码,但您可以为其他数据帧重复它。

请注意,pd.read_html()制作数据框列表,而不是数据框,因为 HTML 网站或文件可以包含多个数据框。这就是为什么我包含这行代码:
df2020 = df2020[0]. 它从列表中选择第一个数据框。

如果您需要重置索引,请将此代码添加到末尾:

df2020 = df2020.reset_index(drop=True)

推荐阅读