处理数据集时,它们不一定是我们需要的格式。有时,甚至数字数据也可以以文本格式存储,而类似的实例可能会影响我们前进的速度,特别是当涉及大量数据时。有没有解决的办法?Python 中的任何东西可以帮助我们摆脱这种痛苦吗?本文试图通过演示特定案例的解决方案来回答这些问题,其中我们将数字转换为日期和时间格式。
我们将研究以下每个类别的int64数据到日期时间格式的转换。
- 转换长日期
- 转换短日期
- 将日期与时间转换
要将 Pandas 中的 int64 转换为 Datetime,请使用 pd.to_datetime() 函数。对于长日期 (YYYYMMDD),请使用格式“%Y%m%d”。对于短日期 (YYMMDDD),请使用“%y%m%d”。对于带有时间的日期 (YYMMDDHHMM),请使用“%y%m%d%H%M”。调整格式参数以适合您的特定日期表示形式。
pandas库中的to_datetime ()函数将用于将int64数据转换为datetime。因此,让我们开始使用以下代码导入pandas库。
import pandas as pd |
转换长日期 (YYYYMMDD)
该类别处理以int64格式的连续数字形式存储的日期。让我们仔细看看使用print函数打印以下数据集时会出现什么情况。
df = pd.DataFrame({ 'When?' :[ 20200316 , 20230517 , 20210525 , 20221219 , 20191130 ], 'What?' : [ 'Convocation' , 'Exams End' , 'Vacation starts' , 'Tour' , 'Party' ]}) print (df) print (df.dtype) |
从上图可以明显看出,数据类型是int64,并且很明显,该数据不是任何可以表示日期的常规方式。因此,是时候采取行动并使用to_datetime( )函数做一些事情了。
df[ 'When?' ] = pd.to_datetime(df[ 'When?' ], format = '%Y%m%d' ) |
运行上面的代码并尝试使用print函数再次打印数据帧。另外,看看结果数据框中的数据类型,您可能会感到惊讶。
看到日期按照应有的格式真是让人松了一口气,不是吗?
转换短日期 (YYMMDD)
有时,数字格式的日期也可以采用缩写形式,仅采用年份的两位数字而不是四位数字。当部署上一节中详细介绍的技术将这些值转换为日期时间格式时,这可能会带来问题。所以,这就是需要做的事情,对代码进行一些小的调整,我们就准备好了。
最好是亲眼目睹演示,而不是谈论它,所以请查看下面的数据集。
df = pd.DataFrame({ 'When?' :[ 200316 , 230517 , 210525 , 221219 , 191130 ], 'What?' : [ 'Convocation' , 'Exams End' , 'Vacation starts' , ‘Tour’, ‘Party’]}) print (df) print (df.dtypes) |
这里的小调整是在to_datetime函数中用“%y”替换“%Y”,如下所示。
df[ 'When?' ] = pd.to_datetime(df[ 'When?' ], format = '%y%m%d' ) |
现在运行代码并打印结果以见证“何时?”下所有值的日期格式的变化 柱子。
将日期与时间转换 (YYMMDDHHMM)
也可能存在日期与时间组合并一起列出的情况。从时间中筛选日期可能听起来像是一项艰巨的任务,但 Python 的情况并非如此。让我们通过下面的例子来看看如何解决这个问题。
df = pd.DataFrame({ 'When?' :[ 2003161915 , 2305171300 , 2105250700 , 2212191030 , 1911302130 ], 'What?' : [ 'Convocation' , 'Exams End' , 'Vacation starts' , 'Tour' , 'Party' ]}) print (df) print (df.dtypes) |
“何时?”下每个值的最后四位数字 列对应 24 小时格式的时间。现在让我们将其与日期分开,同时使用to_datetime( )函数将数值转换为日期。包括“%H%M”以将时间与日期分开。
df[ 'When?' ] = pd.to_datetime(df[ 'When?' ], format = '%y%m%d%H%M' ) |
运行上面的代码,当使用打印函数返回修改后的数据帧时,结果就会出现。
概括
现在我们已经到了本文的结尾,希望它已经详细说明了可用于在 Pandas 中将 int64 数据转换为 Datetime 的不同变体。这是另一篇文章,详细介绍了如何 在 Python 中显示带有前导零的数字。AskPython中还有许多其他有趣且内容丰富的文章,可能对那些希望提高 Python 水平的人有很大帮助。Audere est Facere!