【问题标题】:How to loop through each row in a column in a pandas dataframe如何循环遍历熊猫数据框中列中的每一行
【发布时间】:2021-08-25 07:01:24
【问题描述】:

我有一个如下所示的 excel 文件,其中包含一组名称及其 google 学者链接。

ID   Name   Link
1    A      www.abc.com
2    B      www.def.com
3    C      www.ghi.com

我编写了一个代码来读取 excel 文件,使用 for 循环浏览每个链接,在每个循环中 - 从每个链接中抓取信息并将其写入一个新文件。代码如下。

File=[]
for i in arr:
   driver.get(i)
   columns={}
   columns['Name'] = driver.find_element_by_id()
   columns['Citations'] = driver.find_element_by_id()
   File.append(columns)

我的问题是我想在我的新文件中包含一个列“ID”,它与我的 Excel 文件中的“ID”列相同。本质上,我想要 for 循环的第一次迭代中列“ID”的第一行,循环第二次迭代中列“ID”的第二行,依此类推。有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: python pandas dataframe for-loop web-scraping


    【解决方案1】:

    不要将它们保存为字典,而是将它们保存为 DataFrame 并分配一个新列,称为 source,id 为:

    File=[]
    for i in arr:
       driver.get(i)
       columns={}
       columns['Name'] = driver.find_element_by_id()
       columns['Citations'] = driver.find_element_by_id()
       File.append(pd.DataFrame(columns).assign(source=i))
    

    要从中只获取一个数据帧,您可以使用:

    pd.concat(File)
    

    【讨论】:

    • 在我的代码中,i 是“链接”列的每个元素。因此,上面的代码给了我一个名为 source 的列,其中出现了链接列。但是,我需要 ID 列。我的原始数据框名为 df。所以,我使用 source=df.ID 而不是 i?但是,那也行不通
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2017-06-08
    • 2020-11-20
    • 2019-01-15
    • 1970-01-01
    • 2017-01-15
    相关资源
    最近更新 更多