python - 如何使用从 HTML 文件导入的 pandas 从数据集中提取特定列?
问题描述
import requests
import os
import pandas as pd
from bs4 import BeautifulSoup
#Importing html
df = pd.read_html(os.path.expanduser("~/Documents/HTMLSpider/HTMLSpider_test/spotgamma.html"))
print (df['Latest Data'])
我可以在网上找到的所有文档都指出,从数据集中提取特定列需要您在方括号中指定列标题的名称,但是当我尝试这样做时,这会返回 TypeError:
>
print (df['Latest Data'])
TypeError: list indices must be integers or slices, not str
如果您对数据集的外观感到好奇而不尝试指定列:
SpotGamma Proprietary Levels Latest Data ... NDX QQQ
0 Ref Price: 4465 ... 15283 372
1 SpotGamma Imp. 1 Day Move: 0.91%, ... NaN NaN
2 SpotGamma Imp. 5 Day Move: 2.11% ... NaN NaN
3 SpotGamma Gamma Index™: 0.48 ... 0.04 -0.08
4 Volatility Trigger™: 4415 ... 15075 373
5 SpotGamma Absolute Gamma Strike: 4450 ... 15500 370
6 Gamma Notional(MM): $157 ... $4 $-397
解决方案
注意
df = pd.read_html(os.path.expanduser("~/Documents/HTMLSpider/HTMLSpider_test/spotgamma.html"))
将返回一个数据框列表,而不是一个。
请参阅:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html(“将 HTML 表读入 DataFrame 对象列表。”)
最好做
ldf = pd.read_html(os.path.expanduser("~/Documents/HTMLSpider/HTMLSpider_test/spotgamma.html"))
进而
df = ldf[0] # replace 0 with the number of the dataframe you want
获取第一个数据框(可能还有更多,请检查len(ldf)
您获得了多少以及哪个具有您需要的列)。
推荐阅读
- android-studio - 如何让 onclick 方法在 onCreate() 之外工作?
- r - scale_alpha_continuous 对数刻度
- python - 如何从具有某些值的列表的熊猫数据框列中获取行
- excel - 批量电子邮件提取器。需要添加一个Regxp - excel VBA
- python - Python:使用 lxml xpath 从所有 HTML 子元素文本中获取文本
- powershell - 参数化值会导致 powershell/msbuild 命令出错
- mongodb - 嵌入 mongodb 到 spring-boot 应用程序 java 异常
- sql - 在 SQL Server 中将 getdate() 转换为 dd/mm/yyyy
- html - 内容的过渡不起作用
- python - Pandas - 按列分组,然后从结果创建新列