首页 > 其他分享 >请问Pandas怎么能把类似201001这种月度格式改为2021-01-31这种日期格式

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

时间:2023-04-27 11:40:11浏览次数:43  
标签:01 pd 201001 df 所示 2022 import date 格式


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

大家好,我是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这种日期格式_数据挖掘_04

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


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

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


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

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


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

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


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

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

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

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

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

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


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

三、总结

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


标签:01,pd,201001,df,所示,2022,import,date,格式
From: https://blog.51cto.com/u_13389043/6230074

相关文章

  • "Wed Aug 03 19:48:03 +0800 2022"这种字符串,怎么转成时间格式年月日
    今日鸡汤清瑟怨遥夜,绕弦风雨哀。大家好,我是Python进阶者。一、前言昨天在Python黄金交流群【此类生物】问了一个Python时间处理的问题二、实现过程这里一共有两个方法,实现的过程是类似的。这里【瑜亮老师】给了一个回答,代码如下所示:fromdatetimeimportdatetimed='WedAug03......
  • java 格式化输出当前时间
    /***打印当前时间**@return*/publicstaticvoidprintCurrentTime(Stringparam){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//关键所在TimeZonegmt=TimeZone.getTimeZone("GMT+8");sdf.setTimeZone(gmt);......
  • @JsonFormat和@DataFormat注解解决前后端日期格式一致性问题
    场景分析场景1:当我们从数据库中查询某篇博客文章数据时,blog表中文章发布日期blog_date这个字段,如果未经过处理,后端查询到的数据传到前端进行展示时,会得到一个不太符合我们要求的日期格式,比如:"blog_date":"2020-12-01T14:25:31.296+0000",为了解决这个问题,将后端返回给前端的日......
  • #PowerBI 利用format函数,自定义格式显示
    PowerBI是一款强大的数据分析和可视化工具,它可以帮助我们快速地创建各种报表和仪表盘,展示数据的洞察和价值。在PowerBI中,有许多内置的函数可以帮助我们处理和转换数据,其中一个常用的函数就是Format函数。Format函数的作用是将一个值按照指定的格式进行显示,例如日期、时间、货币......
  • 字符串的格式转换,GBK.UTF8.WCHAR.CHAR
    这里介绍的是使用Windowsapi进行的转换,看一下源代码:template<typenameAy,typenameTy>CStringT<Ay,StrTraitMFC_DLL<Ay>>StrTran(constTy*val,intopt=CP_ACP)constnoexcept{static_assert((std::is_same_v<Ay,char>&&std:......
  • Using base64 encoding and decoding for file transfer in AX 2012
    Base64BinDataIfyouwanttotransfersmallfiledatausingAXanddonotwanttomakeuseofsharedfoldersorfileuploading,sendingyourfiledirectlyinsideyourXMLmessageasbase64encodedstringisagoodoption.Base64givesyouthepossibil......
  • c++输出格式控制
    c++输出格式控制 一.控制符需要<iomanip>头文件常用:1.保留几位有效数字:setpricision(),括号里是保留的位数2.保留几位小数:setiosflags(ios::fixed)<<setpricision(),括号里是保留的位数(注意前面半句会影响此后所有setpricision()的用法,都变成保留小数位数,不只是这......
  • [7626] 01 组件渲染:vnode 到真实 DOM 是如何转变的?
    在Vue.js中,组件是一个非常重要的概念,整个应用的页面都是通过组件渲染来实现的,但是你知道当我们编写这些组件的时候,它的内部是如何工作的吗?从我们编写组件开始,到最终真实的DOM又是怎样的一个转变过程呢?这节课,我们将会学习Vue.js3.0中的组件是如何渲染的,通过学习,你的这些问题......
  • IntelliJ Idea设置text file encoding UTF-8;换行符为 Unix 格式
    设置textfileencodingUTF-8Transparentnative-to-asciiconversion这个功能会将我们输入的所有字符转换成Unicode序列码保存,避免properties的乱码问题。CreateUTF-8files选择withNOBOMUTF-8BOM又叫UTF-8签名。BOM,byteordermark。UTF-8的BOM在文件头部,用来标识......
  • 2023程序设计竞赛冲刺③(2019青岛市程序设计竞赛小学组)
    1.取余原题: 解题思路:这道题30%的数据可以开longlong去存储计算,但100%的数据最多有3000位,无法存储,所以可以运用同余的性质,(a*b)%p=(a%p*b%p)%pAC代码:#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e3+5,MOD=1e4+7;;lla[N],n,ans......