落叶人何在,寒云路几层。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群【老松鼠】问了一道Pandas时间处理的问题,如下图所示。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_数据分析

二、实现过程

一开始以为只是每个数据先加个31后缀,之后日期格式化转换一下应该就可以了,后来发现每个月天数不一样,不可以一概而论,后来才知道,原来有现成的函数。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_人工智能_02

这里【瑜亮老师】给了两个方法,一起来学习下吧!

方法一

代码如下:

import pandas as pd
from pandas.tseries.offsets import MonthEnd

df = pd.DataFrame({'date': ['2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07']})
df['new_date'] = df['date'].astype('datetime64').map(MonthEnd())
print(df)

运行结果如下图所示:

请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_编程语言_03

方法二

至于像202201这样格式的时间字符串,【瑜亮老师】做了一下转换,然后继续使用类似上面的方法,实现需求。

import pandas as pd
from pandas.tseries.offsets import MonthEnd

df = pd.DataFrame({'date': ['202201', '202202', '202203', '202204', '202205', '202206', '202207']})

df['new_date'] = pd.to_datetime(df['date'], format='%Y%m').map(MonthEnd())
print(df)

运行之后,结果如下图所示:


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_python_04

不过后来【月神】在测试的时候发现,当日期是本月的最后一天,转变后会变成下月的最后一天,有点偏移误差。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_python_05

后来【瑜亮老师】还给了一个思路,无需额外导包,不添加任何依赖,如下所示。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_编程语言_06

后来【老松鼠】自己给了一份代码,他自己觉得方法有点儿笨,但是结果和效率也还算可以,如下图所示。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_数据分析_07

后来【月神】针对批量数据,又多方面进行了尝试,如下所示:


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_人工智能_08

后来发现用加号就快了很多。

请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_编程语言_09

针对效率方面,【月神】也给出了自己的看法,真的学习了!

请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_人工智能_10

这个加号,【月神】也举了一个例子,来帮助大家理解。


请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式_python_11

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一道Pandas时间处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。