Python / Pandas - 将行号转换为小时然后切片

时间:2016-05-19 22:54:50

标签: python pandas

我有一个数据框,我已经用Pandas阅读了Python,如下所示:

>>> df id temp 0 1 272.53702 1 2 272.41101 2 3 272.18503 3 4 271.79102 4 5 271.33701 5 6 270.86200 6 7 270.41501 7 8 269.97501 8 9 269.56201 9 10 269.18802 ...

id字段表示从1989年的第一个小时(1989年1月1日午夜)到2010年的最后一个小时的每小时。我的目标是从表示温度的temp列中提取列表从2002年5月1日到2006年11月20日,然后使用Scipy的样条插值拟合列表。我的问题 - 将id转换为日期时间,然后切片以获得我想要的适当日期范围的最有效方法是什么?

感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用日期算术来确定哪些id值对应于您要查找的开始日期和结束日期,然后使用loc选择相关的温度。这可能比将所有id值转换为日期然后切片更快。

start = 24*(pd.to_datetime('2002-05-01') - pd.to_datetime('1989-01-01')).days
end = 24*(pd.to_datetime('2006-11-20') - pd.to_datetime('1989-01-01')).days - 1
temp_values = df.loc[df['id'].between(start, end), 'temp'].values

到“2006年11月20日”,我假设你的意思是,但不包括2006年11月20日。如果你想要数据通过 20,只需使用21而不是计算end时的第20个。我从end中减去一个来计算计算日期前一天的最后一小时,以便不包括计算中使用的日期。

答案 1 :(得分:0)

这基本上是你需要使用的:

>>> from datetime import datetime, timedelta
>>> print datetime(1989, 1, 1)
1989-01-01 00:00:00
>>> print datetime(1989, 1, 1) + timedelta(hours=5)
1989-01-01 05:00:00

答案 2 :(得分:0)

我建议您添加一个<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body style="background-color:lightgrey;"> <h2 align="center" style="color:green;">Employer</h2> <table cellspacing="0" cellpadding="5" width="700" align="center"> <tr bgcolor="#9acd32"> <th style="text-align:left">EmployerID</th> <th style="text-align:left">EmployerName</th> <th style="text-align:left">EmployerAddress</th> <th style="text-align:left">EmployerEmail</th> <th style="text-align:left">EmployerPhone</th> </tr> <xsl:for-each select="EmploymnetService/Employer"> <xsl:sort select="EmployerName"/> <tr> <td><xsl:value-of select="@employerId"/></td> <td><xsl:value-of select="EmployerName"/></td> <td><xsl:value-of select="EmployerAddress"/></td> <td><xsl:value-of select="EmployerEmail"/></td> <td><xsl:value-of select="EmployerPhone"/></td> </tr> </xsl:for-each> </table> <h2 align="center" style="color:green;">Job Ad</h2> <table cellspacing="0" cellpadding="5" width="700" align="center"> <tr bgcolor="#9acd32"> <th style="text-align:left">EmployerID</th> <th style="text-align:left">JobID</th> <th style="text-align:left">JobTitle</th> <th style="text-align:left">JobDescription</th> </tr> <xsl:for-each select="EmploymnetService/Employer/EmployerJobAds/JobAd"> <tr> <td><xsl:value-of select="@employerId"/></td> <td><xsl:value-of select="@JobId"/></td> <td><xsl:value-of select="jobTitle"/></td> <td><xsl:value-of select="jobDescription"/></td> </tr> </xsl:for-each> </table> <h2 align="center" style="color:green;">Qualification</h2> <table cellspacing="0" cellpadding="5" width="700" align="center"> <tr bgcolor="#9acd32"> <th style="text-align:left">JobID</th> <th style="text-align:left">QLevel</th> <th style="text-align:left">QName</th> <th style="text-align:left">QFaculty</th> <th style="text-align:left">QUniversity</th> <th style="text-align:left">QGrade</th> <th style="text-align:left">gradDate</th> </tr> <xsl:for-each select="EmploymnetService/Employer/EmployerJobAds/JobAd"> <tr> <td><xsl:value-of select="@JobId"/></td> <td><xsl:value-of select="QualificationsRequired/QLevel"/></td> <td><xsl:value-of select="QualificationsRequired/QName"/></td> <td><xsl:value-of select="QualificationsRequired/QFaculty"/></td> <td><xsl:value-of select="QualificationsRequired/QUniversity"/></td> <td><xsl:value-of select="QualificationsRequired/QGrade"/></td> <td><xsl:value-of select="QualificationsRequired/gradDate"/></td> </tr> </xsl:for-each> </table> <h2 align="center" style="color:green;">Experience Required</h2> <table cellspacing="0" cellpadding="5" width="700" align="center"> <tr bgcolor="#9acd32"> <th style="text-align:left">JobID</th> <th style="text-align:left">ExpPosition</th> <th style="text-align:left">expDescription</th> <th style="text-align:left">expEmployer</th> <th style="text-align:left">expFrom</th> <th style="text-align:left">expTo</th> </tr> <xsl:for-each select="EmploymnetService/Employer/EmployerJobAds/JobAd"> <tr> <td><xsl:value-of select="@JobId"/></td> <td><xsl:value-of select="ExperienceRequired/ExpPosition"/></td> <td><xsl:value-of select="ExperienceRequired/expDescription"/></td> <td><xsl:value-of select="ExperienceRequired/expEmployer"/></td> <td><xsl:value-of select="ExperienceRequired/expFrom"/></td> <td><xsl:value-of select="ExperienceRequired/expTo"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> 列,以便您传递datetime个对象供选择:

datetime