今
日
鸡
汤
落叶人何在,寒云路几层。
大家好,我是Python进阶者。
一、前言
前几天在Python最强王者交流群【老松鼠】问了一道Pandas
时间处理的问题,如下图所示。
二、实现过程
一开始以为只是每个数据先加个31
后缀,之后日期格式化转换一下应该就可以了,后来发现每个月天数不一样,不可以一概而论,后来才知道,原来有现成的函数。
这里【瑜亮老师】给了两个方法,一起来学习下吧!
方法一
代码如下:
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)
运行结果如下图所示:
方法二
至于像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)
运行之后,结果如下图所示:
不过后来【月神】在测试的时候发现,当日期是本月的最后一天,转变后会变成下月的最后一天,有点偏移误差。
后来【瑜亮老师】还给了一个思路,无需额外导包,不添加任何依赖,如下所示。
后来【老松鼠】自己给了一份代码,他自己觉得方法有点儿笨,但是结果和效率也还算可以,如下图所示。
后来【月神】针对批量数据,又多方面进行了尝试,如下所示:
后来发现用加号就快了很多。
针对效率方面,【月神】也给出了自己的看法,真的学习了!
这个加号,【月神】也举了一个例子,来帮助大家理解。
三、总结
大家好,我是Python进阶者。这篇文章主要盘点了一道Pandas
时间处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。