Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:比较行和列之间的值_Python_Pandas_Beautifulsoup_Python Requests_Urllib - Fatal编程技术网

Python:比较行和列之间的值

Python:比较行和列之间的值,python,pandas,beautifulsoup,python-requests,urllib,Python,Pandas,Beautifulsoup,Python Requests,Urllib,我想在行和列之间找到一种模式,并认为Panda可能有用,但不知何故,我无法用Panda为输出编制索引。它的给出错误,如列表超出范围、数据框错误调用等。我想找出行之间的变化,比如2018年9月和2018年10月或2019年2月和2019年3月。在代码末尾输出 from urllib.request import urlopen from bs4 import BeautifulSoup import requests import pandas as pd url = "https://quote

我想在行和列之间找到一种模式,并认为Panda可能有用,但不知何故,我无法用Panda为输出编制索引。它的给出错误,如列表超出范围、数据框错误调用等。我想找出行之间的变化,比如2018年9月和2018年10月或2019年2月和2019年3月。在代码末尾输出

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = "https://quotes.ino.com/exchanges/contracts.html?r=NYMEX_NG"
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')
column_headers = [th.getText() for th in soup.findAll('tr', limit=3)[2].findAll('th')]

print(column_headers)
data_rows = soup.findAll('tr')[3:]
for td in data_rows:
    Market = td.findAll('td')[0].text
    Contract = td.findAll('td')[1].text
    Open = td.findAll('td')[2].text
    High = td.findAll('td')[3].text
    Low = td.findAll('td')[4].text
    Last = td.findAll('td')[4].text
    Change = td.findAll('td')[4].text
    Pct = td.findAll('td')[4].text
    Time = td.findAll('td')[4].text

    print( Market, Contract, Open, High, Low, Last,Change, Pct, Time)
输出 仅部分复制,因为这会生成许多行



好的,下面介绍如何将其转储到
数据帧中,例如仅使用
数据行的前10行:

from pandas import DataFrame as DF

# the rest of your import statements...
# the rest of your code up until the `for td in data_rows` loop


table_data = [] # empty container for our table's data
for td in data_rows[:10]:
     table_data.append(list(e.text for e in td.findAll('td')))

# create the DataFrame:
df = DF(table_data, columns=column_headers)

print(df)
输出以下帧。在这一点上,你如何处理它取决于你自己

     Market      Contract   Open   High    Low   Last  Change     Pct   Time
0  NG.U18.E  Sep 2018 (E)  2.958  2.960  2.945  2.955  -0.001  -0.03%  21:53
1  NG.V18.E  Oct 2018 (E)  2.944  2.946  2.932  2.943  -0.001  -0.03%  21:53
2  NG.X18.E  Nov 2018 (E)  2.975  2.977  2.964  2.974  -0.001  -0.03%  21:48
3  NG.Z18.E  Dec 2018 (E)  3.068  3.071  3.058  3.068  -0.001  -0.03%  21:48
4  NG.F19.E  Jan 2019 (E)  3.154  3.157  3.144  3.155  +0.001  +0.03%  21:32
5  NG.G19.E  Feb 2019 (E)  3.117  3.118  3.110  3.118   0.000   0.00%  19:36
6  NG.H19.E  Mar 2019 (E)  3.009  3.015  3.005  3.015  +0.001  +0.03%  19:36
7  NG.J19.E  Apr 2019 (E)  2.698  2.698  2.698  2.698  -0.007  -0.26%  18:13
8  NG.K19.E  May 2019 (E)  2.671  2.675  2.662  2.670  -0.003  -0.11%  16:02
9  NG.M19.E  Jun 2019 (E)  2.697  2.701  2.692  2.695  -0.004  -0.15%  15:26

你不用熊猫,你能帮我吗?我已经尽力了。是的,我修复了你的代码缩进。干杯你的问题是什么还不清楚。您的代码中没有错误,并且您根本没有使用
pandas
库执行任何操作。此外,我观察到您为
Low
Last
Change
Pct
Time
中的每一个提取相同的元素文本。这对我来说似乎是一个错误,因为5个元素不可能由同一个
td
元素表示。我的问题是我想索引行,以便我可以绘制行,并相互比较特定月份之间的价差。或者可以是索引列以查找价格变化。你能帮助我如何使用熊猫分配索引吗?我是熊猫/蟒蛇新手,所以如果我在任何地方出错,我都会接受你的建议。太好了。给我发电子邮件。大卫,我想给你寄一张礼品卡。请给我一杯咖啡。@SiddharthKulkarni没有必要给我寄任何东西,但谢谢你!在堆栈溢出问题上,感谢人们提供有用答案的方法是投票或将答案标记为已接受。干杯。最后一个问题——你能推荐一本关于Python的书吗?这本书对我在网络抓取和Panda方面的知识水平有帮助吗?我已经有了Ryan Mitchell写的关于数据分析和网络抓取的书,但不知怎么的,我无法跟上。我想要一本教特定于应用程序的Python的书。
     Market      Contract   Open   High    Low   Last  Change     Pct   Time
0  NG.U18.E  Sep 2018 (E)  2.958  2.960  2.945  2.955  -0.001  -0.03%  21:53
1  NG.V18.E  Oct 2018 (E)  2.944  2.946  2.932  2.943  -0.001  -0.03%  21:53
2  NG.X18.E  Nov 2018 (E)  2.975  2.977  2.964  2.974  -0.001  -0.03%  21:48
3  NG.Z18.E  Dec 2018 (E)  3.068  3.071  3.058  3.068  -0.001  -0.03%  21:48
4  NG.F19.E  Jan 2019 (E)  3.154  3.157  3.144  3.155  +0.001  +0.03%  21:32
5  NG.G19.E  Feb 2019 (E)  3.117  3.118  3.110  3.118   0.000   0.00%  19:36
6  NG.H19.E  Mar 2019 (E)  3.009  3.015  3.005  3.015  +0.001  +0.03%  19:36
7  NG.J19.E  Apr 2019 (E)  2.698  2.698  2.698  2.698  -0.007  -0.26%  18:13
8  NG.K19.E  May 2019 (E)  2.671  2.675  2.662  2.670  -0.003  -0.11%  16:02
9  NG.M19.E  Jun 2019 (E)  2.697  2.701  2.692  2.695  -0.004  -0.15%  15:26