提问人:adss4 提问时间:11/16/2023 更新时间:11/16/2023 访问量:46
在字典中同时追加键和值
append key and value in dictionary simultaneously
问:
我有一个标题和值列表,这些标题和值来自一个 Web 废弃的页面。但是一旦我把它传递给一个for循环,我就会得到一个非常大的列表。在代码中,我正在迭代标题和 Web 元素并将它们存储在列表中,不知道为什么
header = ['h1','h2'......'h60']
Webscrapped list, in code get values like below
row.find_elements(By.TAG_NAME, "td")[i].text -> something like this values [1,2.........5]
here i got 'i' till 60 where the headers is also till 60, so i pass the same 'i' value for key and value parsing
预期大小:实际的网页表大小为 [60 列 * 9 行] 但我得到 pandas 数据帧 [60 列 * 580+ 行]
我尝试过的代码
value_list = []
header_list = ['h1','h2','h3',.......,'h60']
for i in range(0,len(header_list)):
for row in table_trs:
value_list.append({
header_list[i]:row.find_elements(By.TAG_NAME, "td")[i].text
})
df = pd.DataFrame(value_list)
答:
1赞
Anentropic
11/16/2023
#1
我想你的意思是这样做:
value_list = []
header_list = ['h1','h2','h3',.......,'h60']
for row in table_trs:
value_list.append({
header: row.find_elements(By.TAG_NAME, "td")[i].text
for i, header in enumerate(header_list)
})
df = pd.DataFrame(value_list)
即,中的每个元素都应该是一个完整的字典,表示表中的一行value_list
而在原始代码中,您为每列每行制作了一个字典
我想你也可以这样做:
value_list = []
header_list = ['h1','h2','h3',.......,'h60']
for row in table_trs:
value_list.append([
row.find_elements(By.TAG_NAME, "td")[i].text
for i in range(0, len(header_list))
])
df = pd.DataFrame(value_list, columns=header_list)
以避免每一行都重复标题(如果您要构建很多行,则效率更高)
评论
0赞
adss4
11/16/2023
“列出索引超出范围”,它为两个代码显示此错误
0赞
adss4
11/16/2023
row.find_elements(By.TAG_NAME, “td”)[i] 这里的 i 是所有人的不同值,例如:如果 i -> 2,则值为 [100, 200, 300...]
1赞
Anentropic
11/16/2023
您的原始代码也会有同样的问题。听起来有一个少于标头的标头row
<td>
0赞
adss4
11/16/2023
你是对的,行小于 TD,现在它就像一个魅力,谢谢
评论