【问题标题】:Pandas Dataframe - Issue when sorting DatesPandas Dataframe - 排序日期时的问题
【发布时间】:2018-09-21 14:43:25
【问题描述】:

我已经阅读了很多关于这个主题的问题,但我似乎无法找到我的代码不起作用的原因。

在从网站上进行一些抓取之后,我基本上是在尝试按列(“日期”)对 Pandas 数据框进行排序。我已尝试将日期转换为日期时间对象,但这也不起作用,如果有人能告诉我我在这里可能做错了什么,我将不胜感激。

def find_data(soup):
    l = []
    for b in soup.find_all('div', class_= 'jobInfo'):
        d = {}
        company = b.find('h2').find('a')
        d["Role"] = company['title'].split(':')[0]
        d["URL"] = 'https://www.computerjobs.ie' + company['href']
        company_name = b.find('ul', class_= 'jobDetails').find('li', class_= 'jobCompanyName').get_text()
        d["Company"] = company_name.split(':')[1].strip()
        date = b.find('ul', class_= 'jobDetails').find('li', class_= 'jobLiveDate').get_text()
        d["Date"] = date.split(':')[1].strip()
        l.append(d)
    df = pd.DataFrame(l)
    #Rearranging the order of the columns
    df = df[['Date', 'Company', 'Role', 'URL']]
    #Dropping null rows
    df=df.dropna()
    #df['Date'] = pd.to_datetime(df.Date)
    #df.sort_values('by=["'Date"], ascending = True)
    df.sort_values(by = ['Date'])
    df.to_csv("csv_files/pandas_data.csv")

输出:

,Date,Employer,Title,URL
0,11/04/2018,nineDots - Technology Recruitment,Senior Python Developer,https://www.computerjobs.ie/jobs/7175653/senior-python-developer.asp
1,10/04/2018,Allen Recruitment,Lead Python Developer,https://www.computerjobs.ie/jobs/7158984/lead-python-developer.asp
2,10/04/2018,Allen Recruitment,Python Developer,https://www.computerjobs.ie/jobs/7158996/python-developer.asp
3,11/04/2018,Solas Consulting Group,Python Developer,https://www.computerjobs.ie/jobs/7231476/python-developer.asp
4,11/04/2018,nineDots - Technology Recruitment,Senior Python Developer,https://www.computerjobs.ie/jobs/7181828/senior-python-developer.asp
5,09/04/2018,realTime Recruitment Ltd.,Senior DevOps Engineer,https://www.computerjobs.ie/jobs/7240215/senior-devops-engineer.asp
6,11/04/2018,FRS Recruitment,Software Engineer/Cloud Engineer,https://www.computerjobs.ie/jobs/7140213/software-engineer-cloud-engineer.asp
7,11/04/2018,Solas Consulting Group,Junior .NET Developer,https://www.computerjobs.ie/jobs/7232494/junior-net-developer.asp
8,11/04/2018,Evolve Adviser Ltd,Data Architect,https://www.computerjobs.ie/jobs/7247685/data-architect.asp
9,11/04/2018,nineDots - Technology Recruitment,Senior DevOps Engineer,https://www.computerjobs.ie/jobs/7191814/senior-devops-engineer.asp

【问题讨论】:

  • 如果您显示代码的输出可能会有所帮助。
  • sort_values 不在位。你需要做df = df.sort_values(by = ['Date'])df.sort_values(by = ['Date'], inplace=True)
  • 就地添加=True

标签: python pandas csv sorting beautifulsoup


【解决方案1】:

重新分配排序语句:

df = df.sort_values(by = ['Date'])

df.sort_values 默认不就地,您必须重新分配回 df 以保留排序,或者在sort_values 方法中使用inplace=True 作为参数。

【讨论】:

  • 感谢大家的cmets。这正是问题所在,我忘记将其重新分配回 df 以保留排序。我很欣赏添加“inplace=True”的附加选项。
  • @pyrish 另外,请注意,您不应该两者都做。如果您使用 inplace=True,则函数的返回将为 null/NoneType。要么重新分配给变量,要么使用 inplace=True。
  • 没错,我只使用了 inplace=True 并修复了日期的排序问题。再次感谢@Scott Boston 确保我做对了。
猜你喜欢
  • 2022-12-21
  • 2017-01-19
  • 2022-12-01
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2020-05-23
相关资源
最近更新 更多