python - 我为 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 ??
解决方案
这应该有效:
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)
推荐阅读
- java - 如何使用查询 findByClassLiteral 构建自定义 MongoRepository
- ruby-on-rails - Gem::Ext::BuildError: 错误: 无法构建 gem 原生扩展。Ubuntu 18.04
- javascript - Semantic-UI 侧边栏转换问题
- python - Python Plot - 多个图中的数据
- python - clf.fit(X, y) 没有以小值运行 - fit() 永远不会完成 - 潜在的 sklearn 错误:数据科学
- ruby-on-rails - Rails 4.2 范围查询 IS NULL 而不是 IS NOT NULL
- jmeter - J-Meter 性能测试结果对于家庭 Wifi 和办公室局域网网络有很大差异。为什么?
- jenkins - 如何从詹金斯变量制作小写变量
- r - data.table 中的动态行过滤器向量
- node.js - mongoDB 和 nodeJs 无法正确处理并发请求