精华内容
下载资源
问答
  • 主要介绍了pandas进行时间数据的转换和计算时间差并提取年月日,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Pandas怎样解析日期的年月日

    千次阅读 2021-01-28 11:13:06
    如果一个数据文件中,有一列是日期列,怎样快速提取日期的年、月、、周、季等信息呢?方法就是pandas提供的to_datetime函数了,可以看下代码演示:1、读取数据文件import pandas as pdfpath="./datas/beijing_...

    哈喽大家好,我是蚂蚁啊,给大家分享个Pandas的小知识。

    如果一个数据文件中,有一列是日期列,怎样快速提取日期的年、月、日、周、季等信息呢?

    方法就是pandas提供的to_datetime函数了,可以看下代码演示:

    1、读取数据文件

    import pandas as pdfpath = "./datas/beijing_tianqi_2018.csv"df = pd.read_csv(fpath)df.head()

    看下数据:

    ymd  bWendu  yWendu  tianqi  fengxiang  fengli  aqi  aqiInfo  aqiLevel0  2018-01-01  3  -6  晴~多云  东北风  1-2级  59  良  21  2018-01-02  2  -5  阴~多云  东北风  1-2级  49  优  12  2018-01-03  2  -5  多云  北风  1-2级  28  优  13  2018-01-04  0  -8  阴  东北风  1-2级  28  优  14  2018-01-05  3  -6  多云~晴  西北风  1-2级  50  优  1

    2、把日期变成索引列

    df.set_index(pd.to_datetime(df["ymd"]), inplace=True)# 看下索引列df.indexdf.head().index

    我们看到这一列变成了DatetimeIndex类型:

    DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',               '2018-01-05'],              dtype='datetime64[ns]', name='ymd', freq=None)

    3、现在可以直接访问日期的各个属性了

    # 年df.head().index.year结果:Int64Index([2018, 2018, 2018, 2018, 2018],dtype='int64', name='ymd')

    # 月df.head().index.month结果:Int64Index([1, 1, 1, 1, 1], dtype='int64', name='ymd')

    # 日df.head().index.day结果:Int64Index([1, 2, 3, 4, 5], dtype='int64', name='ymd')

    # 周df.head().index.week结果:Int64Index([1, 1, 1, 1, 1], dtype='int64', name='ymd')

    # 季df.head().index.quarter结果:Int64Index([1, 1, 1, 1, 1], dtype='int64', name='ymd')

    Pandas提供了更多的解析日期的各个属性,链接为:

    https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#time-date-components

    展开全文
  • matlab开发-年月日年月日。将一年中的一天转换为相应的月和日
  • python3 正则提取年月日、年月、年思路使用到知识点:[]用来表示一组字符串()对正则表达式分组并记住匹配的文本[0-9]匹配任何数字\d匹配一个数字字符,等价于[0-9]?匹配0或者2个 非贪婪模式|或提取的文本:1961年5月...

    python3 正则提取年月日、年月、年思路

    使用到知识点:[]    用来表示一组字符串

    ()    对正则表达式分组并记住匹配的文本

    [0-9]    匹配任何数字

    \d    匹配一个数字字符,等价于[0-9]

    ?    匹配0或者2个 非贪婪模式

    |    或

    提取的文本:1961年5月27日

    1961年05月01日

    1961年03月05日

    1961年11月10日

    3000年01月30日

    1111年8月27日

    1345年09月27日

    1574年12月27日

    1961年10月12日

    61年

    1年2月

    888年12月

    长安元年(701年)

    思路:# 匹配数字年

    year_pattern="(\d{1,4}年)"

    # 匹配月 月比较特殊 可能会出现01月 1月这两种情况 还有10月,12月

    month_pattern="(([0?][1-9])月)|(([1?][0-2])月)|([1-9]月)"

    # 匹配日 保证匹配的数字是1-31,暂未考虑单双月和2月 闰年

    day_pattern="([0?][1-9]日)|([1?][0-9]日)|([2?][1-9]日)|([3][0-1]日)"

    date_pattern="(\d{1,4}年)((([0?][1-9])月)|(([1?][0-2])月)|([1-9]月)?)(([0?][1-9]日)|([1?][0-9]日)|([2?][1-9]日)|([3][0-1]日)?)"

    import re

    def get_date(val):

    res=re.search(date_pattern,val)

    if res:

    return res.group()

    return None

    日期正则表达式构建规则分析

    写复杂正则的一个常用方法,就是先把不相关的需求拆分开,分别写出对应的正则,然后组合,检查一下相互的关联关系以及影响,基本上就可以得出对应的正则。

    按闰年的定义可知,日期可以有几种分类方法。

    根据天数是否与年份有关划分为两类

    与年份无关的一类中,根据每月天数的不同,又可细分为两类1、3、5、7、8、10、12月为1-31日

    4、6、9、11月为1-30日

    与年份有关的一类中平年2月为1-28日

    闰年2月为1-29日

    根据包含日期不同可划分为四类所有年份的所有月份都包含1-28日

    所有年份除2月外都包含29和30日

    所有年份1、3、5、7、8、10、12月都包含31日

    闰年2月包含29日

    正则实现

    针对每一个规则写出对应的正则,以下暂按xx年xx月xx日格式进行实现。

    先考虑与年份无关的前三条规则,年份可统一写作((?!0000)[0-9]{1,4}年)

    下面仅考虑月和日的正则

    包括平年在内的所有年份的月份都包含1-28日(0?[1-9]|1[0-2])月(0?[1-9]|1[0-9]|2[0-8])日

    包括平年在内的所有年份除2月外都包含29和30日(0?[13-9]|1[0-2])月(29|30)日

    包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日(0?[13578]月|1[02]月)(31日)

    参考文章:

    https://www.cnblogs.com/fnlingnzb-learner/p/11804303.html

    展开全文
  • 提取字符串中年月的函数代码,需要的朋友可以过来参考下。希望对大家有所帮助
  • 日期: 2018年07月31 " ; // xx年xx月xx strs = textBox1.Text; var test = ff(strs); string [] temp = test.Split( new char [] { ' # ' }, StringSplitOptions.RemoveEmptyEntries); strs =...
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace ExtractTime
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //--
                string[] strlist = {"","","" };
                string strs = "日期:    2018年07月31日"; //xx年xx月xx日
                strs = textBox1.Text;
    
    
                var  test =  ff(strs);
                string[] temp = test.Split(new char[] { '#'}, StringSplitOptions.RemoveEmptyEntries);
    
                strs = strs.Replace(" ",""); //日期:2018年07月31日
                var cut = "";bool Mouthbl = false;
                //查询第一个年字所在位置
                for (int i=0;i<strs.Length;i++)
                {
                    cut = strs.Substring(i,1); //截取一个字符
                    if (cut.Contains("")) //当前字符是年字
                    {
                        //查找月字
                        for (int ii = i; ii < strs.Length; ii++)
                        {
                            cut = strs.Substring(ii, 1); //截取一个字符
                            if (cut.Contains("")) //当前字符是月字
                            {
                                //包含月字
                                Mouthbl = true;
                                var x = i;
                                var y = ii;
                                if (y-x<=3&& y - x > 1) //年月,a年a月,aa年aa月
                                {
                                    //截取字符串
                                    if (i>=4)
                                    {
                                        var year =  strs.Substring(i-4,4); //截取4个
                                        //验证该字符串是否是数字(略)
                                        var mouth = strs.Substring(ii - 2, 2).Replace("",""); //截取月
                                        var day = "";
                                        //截取日
                                        if (strs.Length-(ii+1)>=3) //xx月xx日
                                        {
                                          day = strs.Substring(ii,3).Replace("","");
                                        }
                                        textBox2.Text = year + mouth + day;
                                      
                                        break;
    
                                    }
                                }
                               
                            }
                        }
                        if (Mouthbl)
                        {
                            break; //包含月
                        }
                    }
                }
    
    
    
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
    
                // Newmode.CompileDate = Convert.ToDateTime(CompileDate); //时间 字符串转时间
                textBox1.Text = "";
                textBox2.Text = "";
            }
            public string ff(string strs)
            {
                string result = "";
    
                strs = strs.Replace(" ", ""); //日期:2018年07月31日
                var cut = ""; bool Mouthbl = false;
                //查询第一个年字所在位置
                for (int i = 0; i < strs.Length; i++)
                {
                    cut = strs.Substring(i, 1); //截取一个字符
                    if (cut.Contains("")) //当前字符是年字
                    {
                        //查找月字
                        for (int ii = i; ii < strs.Length; ii++)
                        {
                            cut = strs.Substring(ii, 1); //截取一个字符
                            if (cut.Contains("")) //当前字符是月字
                            {
                                //包含月字
                                Mouthbl = true;
                                var x = i;
                                var y = ii;
                                if (y - x <= 3 && y - x > 1) //年月,a年a月,aa年aa月
                                {
                                    //截取字符串
                                    if (i >= 4)
                                    {
                                        var year = strs.Substring(i - 4, 4); //截取4个
                                        //验证该字符串是否是数字(略)
                                        var mouth = strs.Substring(ii - 2, 2).Replace("", ""); //截取月
                                        if (mouth.Length == 1) //位数为1补0
                                        {
                                            mouth = "0" + mouth;
                                        }
                                        var day = "";
                                        //截取日
                                        if (strs.Length - (ii + 1) >= 3) //xx月xx日
                                        {
                                            day = strs.Substring(ii, 3).Replace("", "");
                                            if (day.Length==1)////位数为1补0
                                            {
                                                day = "0" + day; 
                                            }
                                        }
                                        result = year+"#" + mouth + "#" + day;
                                        break;
    
                                    }
                                }
    
                            }
                        }
                        if (Mouthbl)
                        {
                            break; //包含月
                        }
                    }
                }
                return result;
            }
        }
    }

     

    转载于:https://www.cnblogs.com/enych/p/11084116.html

    展开全文
  • Excel提取年月日

    千次阅读 2020-08-17 21:42:15
    Excel不同日期格式提取日期格式的年、月、

    问题场景


    • 从任务数据表中比较所有任务的预计完成时间和实际完成时间,来判断该任务是逾期还是按期完成了,根据实际场景是不需要考虑时分秒,只需对比该任务预计完成和实际完成的年月日

    • 可通过提取年月日用函数进行比较。

    • 以下解决方法不仅只适用于提取年月日。

    场景实例


    以下图中数据都为测试数据,不具备真实性!

    • 判断下图数据中的任务是否逾期(任务5/6/7是逾期的)

    img

    目标


    • 提取【实际完成时间]的年月日,再用公式与预计完成时间对比这些任务有没有按期完成。

    解决方案一


    用分列中分隔符号提取。

    • 第一步:1.在【实际完成时间】的后面插入一列(要分成两列)——>2.点击功能项的【数据】——>3.点击【分列】——>4.下的一个选项分列

    img

    • 第二步:默认【分隔符号】——>点击【下一步】

    img

    • 第三步:选择【空格】(年月日和时分秒中间有空格)——>点击【下一步】

    img

    • 第四步:将【实际完成时间】列设置为日期格式——>点击【完成】

    img

    • 第五步:最后结果

    img

    • 看是否逾期(这里不是重点,只列一种,不详细介绍)
    =IF(C2-E2>0,"逾期","按期")
    #预计完成时间小于实际完成时间的都属于逾期(C列与D列也可直接相减筛选出来大于0的就是逾期的任务)
    

    img

    解决方案二


    用分列中固定宽度提取(注意;是固定宽度,比如2020/04/17与2020/4/17是不同的)。

    • 第一步同上

    • 第二步:选择——>【固定宽度】

    img

    • 第三步:1.单击建立【分列线】——>2.滑动侧边栏查看分列线是否分隔正确——>3.点击【下一步】

    img

    • 第四步:选择【日期】——>点击【完成】

    img

    • 第五步:最后结果(注意分列完有时需要修改列标题)

    img

    解决方案三


    用TEXT()函数提取年月日。

    • 第一步插入一列,在D2单元格输入以下公式:
    =TEXT(C2,"yyyy-mm-dd")
    #不考虑相对引用和绝对引用
    

    img

    • 第二步:鼠标移到D2单元格的右下角,出现实心的黑色【+】号,双击填充此列

    img

    • 第三步:最后结果

    img

    • 对比函数公式:
    =TEXT(C2,"yy-m-d")
    #“yy-m-d”是指如果是2019-04-17 15:17:19,最后结果就是19-4-17,'-'可以替换为'/‘
    

    img

    总结


    实际业务场景复杂时,可能也会存在单元格数据类型不是日期或常规格式、字段长度不同等问题,可使用多种方案备份后多尝试,办法总比困难多!

    展开全文
  • 1、时间戳转字符串 timeArray = time.localtime(each_timestamp) otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) 2、字符串转时间戳 timeStamp = int(time.mktime...3、时间戳提取年月日时分
  • MFC入门
  • pandas从日期属性中提取年月日

    万次阅读 热门讨论 2019-05-25 19:47:47
    date属性是object类型的, 通过取单元格可以发现它是字符串类型,这样很容易提取年、月、 将日期属性拆分成年、月、, 代码如下: def DateSplit(df, col): """ split the object of '2010-01-02' int....
  • class YMD { private: unsigned int year; unsigned int month; unsigned int day; public: YMD(string date); void show() { cout << "today is " << year...
  • 举例:String str0 = "2015年07月05";Date d1 = new SimpleDateFormat("yyyy年MM月dd").parse(str0);//定义起始日期SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy");SimpleDateFormat sdf1 = new ...
  • JAVA取年月日

    2021-04-12 20:20:43
    Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());String year = String.valueOf(calendar.get(Calendar.YEAR));String month = String.valueOf(calendar.get(Calenda...
  • 通过日期字段提取年月日、timestamp提取时分秒并进行小时汇总1 业务需求2 根据时间字段提取年月日3 根据timestamp提取时分秒并进行小时汇总 1 业务需求 在进行数据分析,经常会遇到时间处理的问题,有时候需要从时间...
  • 提取年:datepart(yy,getdate())提取月:datepart(mm,getdate())提取日:datepart(dd,getdate())提取日期格式:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), ...
  • python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) ...
  • 表示不使用贪婪模式 匹配三个任意的字符 import rep=re.compile('...')print(p.match('Man')) 可以和其他符号组合 import rep=re.compile('.{3}')print(p.match('Man')) 匹配年月日,把年月日都取出来 import rep=re...
  • 大量教程中,对于time库的大部分函数都只是一笔带过,例如菜鸟教程中的介绍:在实际开发过程中,往往遇到中文年月日的情况,找了很多教程、参考书后,才对这一点有一些门道,所以以随笔的形式上传上来,给各位新手...
  • By 本杰明·格雷厄姆引言时间序列是金融量化分析中最常见的数据类型,记录某一变量或特征沿着时间轴而取值,比如某只股票2008-2018年收盘价。量化分析的一个重要环节之一是基于历史数据进行分析和挖掘,试图 从...
  • EXCEL——提取身份证中的出生年月日

    千次阅读 2021-01-19 22:04:48
    1.用到的函数:     TEXT     MID 2.函数语法: TEXT:     语法格式: TEXT(value,format_text)     其中,value 为数字值。format_text 为设置单元格格式中自己所要选用的文本格式。...
  • SQLServer提取日期中的年月日

    千次阅读 2020-12-24 23:16:04
    提取年:select datepart(yy,getdate()) as year提取月:select datepart(mm,getdate()) as month提取日:select datepart(dd,getdate()) as day提取季度:select datepart(quarter,getdate())---------------------...
  • golang 获取当前年月日

    千次阅读 2021-01-09 14:08:26
    时 分 秒 分隔符 PHP Y m d H i s 自定义 Golang 2006 01 02 15 04 05 自定义 即 PHP 中的 Y-m-d H:i:s 等价于 Golang 中的 2006-01-02 15:04:05 二、代码 package main import ( "fmt" "time" ) ...
  • 从字符串中提取年月日 a = '2020-05-08 10:55:00' b = datetime.strptime(a, '%Y-%m-%d %H:%M:%S').strftime('%m-%d') 这样就从字符串中拿到了月日,同样的要那时间只需要改strftime(’%H-%M-%S’) 2.毫秒级时间戳...
  • sqlserver获取当前时间并只需要年月日小时,使用GETDATE和convert函数达到目的
  • 通过机器计算,使用最小二乘法计算a与b(1)提取特征和标签,即提取x与y,让机器学习(2)建立测试数据与训练数据测试数据用来最终测量模型准确度,训练数据用来求得回归方程(3)转化自变量数据格式(因为本次输...
  • /***根据用户输入的身份证号码,从字符串中提取用户的出生年月日,输出用户的生日信息。要求:身份证号码必须为18位或16位。年龄范围在1900到当前日期之间。月份必须在1~12之间对应的日应该与当前月相符,如4月最多...
  • asp提取年月日时分秒

    2010-01-14 21:57:33
    asp提取年月日时分秒.asp asp提取年月日时分秒.asp

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,306
精华内容 4,922
关键字:

年月日如何提取年月