引用 table 数字作为 pandas python 中的变量
Referencing table number as variable in pandas python
尝试在 table 引用中为 pd.read_html 命令传递一个变量。下面给出的代码的摘录。是否有动态分配号码的解决方法?
这里要网页中第6个table。网页上有多个table
编号 0 到 15 需要将 table 编号分配给变量。
import cloudscraper
import pandas as pd
url = 'sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
yr = 2022
mth = 1
z=5
payload = { 'pmrId': 'INP000000043@@INP000000043@@ASK INVESTMENT MANAGERS PRIVATE LIMITED', 'year': yr, 'month': mth}
scraper = cloudscraper.CloudScraper() res = scraper.get(url, params=payload).text
df1 = pd.read_html(res)[z]
我得到的错误是 : list indices must be integers or slices, not set
如果我这样做 df1 = pd.read_html(res)[5]
它会起作用。
提前致谢..
我不确定您为什么会收到 z
是集合的错误。您可能想在之前添加 print(z)
的打印语句,以清楚地看到发生了什么。否则,代码还有一些其他问题。
'sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
不是有效的 url 架构。你需要 https://
- 此请求是 post,不是 get。这里的params参数不会被使用,因为它是一个post.
查看下面的修改以了解您需要修复的内容:
import cloudscraper
import pandas as pd
url = 'https://sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
yr = 2022
mth = 1
z=5
payload = { 'pmrId': 'INP000000043@@INP000000043@@ASK INVESTMENT MANAGERS PRIVATE LIMITED', 'year': yr, 'month': mth}
scraper = cloudscraper.CloudScraper()
res = scraper.post(url, data=payload).text
df1 = pd.read_html(res)[z]
输出:
print(df1)
Investment Approach ... Assets under Management (AUM) as on last day of the month (Amount in INR crores)
Investment Approach ... Total
Unnamed: 0_level_2 ... Total
0 ASK Conviction Portfolio ... 187.47
1 ASK Domestic Resurgence Portfolio ... 1022.58
2 ASK Domestic Resurgence Portfolio STP ... 9.39
3 ASK Emerging Opportunities Portfolio ... 704.17
4 ASK Financial Opportunities Portfolio ... 1009.73
5 ASK Financial Opportunities Portfolio STP ... 7.00
6 ASK Growth Portfolio ... 2163.87
7 ASK Growth Portfolio STP ... 5.91
8 ASK High Conviction Portfolio ... 7.74
9 ASK Hybrid Portfolio ... 56.35
10 ASK India A Plus Portfolio ... 2.36
11 ASK India Select Portfolio ... 3848.58
12 ASK India Select Portfolio STP ... 14.31
13 ASK India Vision Portfolio ... 313.33
14 ASK India Vision Portfolio STP ... 7.18
15 ASK Indian Entrepreneur Portfolio ... 17441.59
16 ASK Indian Entrepreneur Portfolio STP ... 168.12
17 ASK Life Portfolio ... 149.47
18 ASK Liquid Strategy ... 335.53
19 ASK Specialised Portfolio ... 493.01
20 ASK Strategic Portfolio ... 82.57
21 Real Estate Special Opportunities Portfolio ... 166.58
22 Total ... 28196.85
[23 rows x 13 columns]
尝试在 table 引用中为 pd.read_html 命令传递一个变量。下面给出的代码的摘录。是否有动态分配号码的解决方法?
这里要网页中第6个table。网页上有多个table 编号 0 到 15 需要将 table 编号分配给变量。
import cloudscraper
import pandas as pd
url = 'sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
yr = 2022
mth = 1
z=5
payload = { 'pmrId': 'INP000000043@@INP000000043@@ASK INVESTMENT MANAGERS PRIVATE LIMITED', 'year': yr, 'month': mth}
scraper = cloudscraper.CloudScraper() res = scraper.get(url, params=payload).text
df1 = pd.read_html(res)[z]
我得到的错误是 : list indices must be integers or slices, not set
如果我这样做 df1 = pd.read_html(res)[5]
它会起作用。
提前致谢..
我不确定您为什么会收到 z
是集合的错误。您可能想在之前添加 print(z)
的打印语句,以清楚地看到发生了什么。否则,代码还有一些其他问题。
'sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
不是有效的 url 架构。你需要https://
- 此请求是 post,不是 get。这里的params参数不会被使用,因为它是一个post.
查看下面的修改以了解您需要修复的内容:
import cloudscraper
import pandas as pd
url = 'https://sebi.gov.in/sebiweb/other/OtherAction.do?doPmr=yes'
yr = 2022
mth = 1
z=5
payload = { 'pmrId': 'INP000000043@@INP000000043@@ASK INVESTMENT MANAGERS PRIVATE LIMITED', 'year': yr, 'month': mth}
scraper = cloudscraper.CloudScraper()
res = scraper.post(url, data=payload).text
df1 = pd.read_html(res)[z]
输出:
print(df1)
Investment Approach ... Assets under Management (AUM) as on last day of the month (Amount in INR crores)
Investment Approach ... Total
Unnamed: 0_level_2 ... Total
0 ASK Conviction Portfolio ... 187.47
1 ASK Domestic Resurgence Portfolio ... 1022.58
2 ASK Domestic Resurgence Portfolio STP ... 9.39
3 ASK Emerging Opportunities Portfolio ... 704.17
4 ASK Financial Opportunities Portfolio ... 1009.73
5 ASK Financial Opportunities Portfolio STP ... 7.00
6 ASK Growth Portfolio ... 2163.87
7 ASK Growth Portfolio STP ... 5.91
8 ASK High Conviction Portfolio ... 7.74
9 ASK Hybrid Portfolio ... 56.35
10 ASK India A Plus Portfolio ... 2.36
11 ASK India Select Portfolio ... 3848.58
12 ASK India Select Portfolio STP ... 14.31
13 ASK India Vision Portfolio ... 313.33
14 ASK India Vision Portfolio STP ... 7.18
15 ASK Indian Entrepreneur Portfolio ... 17441.59
16 ASK Indian Entrepreneur Portfolio STP ... 168.12
17 ASK Life Portfolio ... 149.47
18 ASK Liquid Strategy ... 335.53
19 ASK Specialised Portfolio ... 493.01
20 ASK Strategic Portfolio ... 82.57
21 Real Estate Special Opportunities Portfolio ... 166.58
22 Total ... 28196.85
[23 rows x 13 columns]