【问题标题】:How can I select the last element from a list within a for loop?如何从 for 循环中的列表中选择最后一个元素?
【发布时间】:2020-12-24 21:24:45
【问题描述】:

首先要做的是,已经有一段时间了,所以我正在努力重新投入我的游戏。

我正在申请工作,并希望通过将其刮掉来跟踪我申请的工作。只是,最后的位仍然被索引,我只想包含与该列相关的内容。我似乎在努力工作。

从网站上提取后,我申请日期的索引如下所示: Date_Applied:[[[我申请]],[今天]]

我的桌子最终如下所示。你可以看到括号以及为什么我不想添加,“我申请”,“申请提交”:

+---------------------------------------------------+--------------------------------------+--------------------------------------+----------------------+
|                     Position                      |               Company                |             Date_Applied             | Number_of_Applicants |
+---------------------------------------------------+--------------------------------------+--------------------------------------+----------------------+
| Renovation/Construction Underwriter               | Ignite Human Capital | Remote        | [[[I applied]], [Today]]             | [1-10 applicants]    |
| Scientific Computing                              | CG-VAK Softwares USA Inc | Remote    | [[[Application submitted]], [Today]] | [1-10 applicants]    |
| Data Analytics Engineer                           | Delta Defense LLC | West Bend, WI    | [[[I applied]], [Today]]             | [1-10 applicants]    |
| Data Analyst - Tableau - Alteryx - Insurance e... | Grapevine Technology | United States | [[[Application submitted]], [Today]] | [100+ applicants]    |
| Technology Integration Specialist                 | KAGE Innovation | Osceola, WI        | [[[Viewed by employer]], [Today]]    | [1-10 applicants]    |
+---------------------------------------------------+--------------------------------------+--------------------------------------+----------------------+


我希望有一种方法可以选择最后一个元素而不删除第一个元素。 有没有人有任何想法?抱歉,我的措辞可能很尴尬。

我的 For 循环如下所示:

import pandas as pd
data = []
for i in soup.find_all('div', {'class': 'atw-AppCard-mainContainer'}):
    job_title = i.find('a', {'class': 'atw-JobInfo-jobTitle'}).text.strip()
    company_name = i.find('div', {'class': 'atw-JobInfo-companyLocation'}).text.strip()  
    number_of_applicants = i.find('span', {'class': 'atw-JobInfo-applicantCount'})
    date= i.find('div', {'class': 'atw-Disposition-value'})

    mytable = {'Position': job_title,
             'Company': company_name,
             'Date_Applied':date,
             'Number_of_Applicants': number_of_applicants}
    data.append(mytable)

df = pd.DataFrame(data)
df.head()

【问题讨论】:

  • 您能否编辑您的问题以包含问题的最简单形式以及预期输出的示例?
  • 可以分享网址吗?

标签: python pandas web-scraping datatables jupyter-notebook


【解决方案1】:

您可能正在寻找类似split 运算符的东西,现在您可以在添加到列表之前使用它,如图所示-

import pandas as pd
data = []
for i in soup.find_all('div', {'class': 'atw-AppCard-mainContainer'}):
    job_title = i.find('a', {'class': 'atw-JobInfo-jobTitle'}).text.strip()
    company_name = i.find('div', {'class': 'atw-JobInfo-companyLocation'}).text.strip()  
    number_of_applicants = i.find('span', {'class': 'atw-JobInfo-applicantCount'})
    date= i.find('div', {'class': 'atw-Disposition-value'})

    mytable = {'Position': job_title,
             'Company': company_name,
             'Date_Applied':date.split(',')[1], # i have changed here.
             'Number_of_Applicants': number_of_applicants}
    data.append(mytable)

df = pd.DataFrame(data)
df.head()

或者
如果您希望在处理数据后达到相同的效果,则可以对列-Date_Applied 执行拆分。对此的参考-https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.split.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2021-08-31
    • 1970-01-01
    • 2018-11-11
    • 2017-11-28
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多