前面我们有学习过有关字符串的处理和正在表达式,但那都是基于单个字符串或字符串列表的操作。下面将学习如何基于数据框操作字符型变量。

同时介绍一下如何从日期型变量中取出年份,月份,星期几等,如何计算两个日期的时间差。

例题如下:

针对以上数据,读者可以在不看下方代码的情况下尝试着回答这些关于字符型及日期型的问题:

1.如何更改出生日期birthday和手机号码tel两个字段的数据类型

2.如何根据出生日期birthday和开始工作日期start_work两个字段新增年龄和工龄两个字段

3.如何将手机号tel的中间四位隐藏起来。

4.如何基于other字段取出每个人员的专业信息

代码如下:

import pandas as pd
#数据读入
df = pd.read_excel(r'd:data_test03.xlsx')
#各变量数据类型
df.dtypes
#将birthday变量转换为日期型
df.birthday = pd.to_datetime(df.birthday,format = '%Y/%m/%d')
#讲tel变量转换为字符串
df.tel = df.tel.astype('str')
#新增年龄和工龄两列
df['age']=pd.datetime.today().year - df.birthday.dt.year
df['workage'] = pd.datetime.today().year - df.start_work.dt.year
#将手机号码中间四位隐藏起来
df.tel = df.tel.apply(func = lambda x:x.replace(x[3:7],'xxxx'))
#取出邮箱的域名
df['email_domain']=df.email.apply(func = lambda x:x.split('@')[1])
#取出人员的专业信息
df['profession'] = df.other.str.findall('专业:(.*?),')         #这个地方要非常注意开始调试的时候我把(.*?)后面的逗号写成是英文模式下的,实际上表格里面是中文模式下的,所以开                                                                                                 始我匹配的结果是空的,改成中文模式的逗号才显示正常
#去除birthday,start_work和other变量
df.drop(['birthday','start_work','other'],axis = 1,inplace = True)
df

out:

1,pd.to_datetime( 要转换的日期, format= ),

2,pd.to_datetime.today( ).year  ,pd.to_datetime.now( ).year

3,字符串的astype方法:字段类型转换,

4,日期.dt.year  :必须加dt

5,删除字段: df. drop ([ ] , axis=1, inplace=True)

df是数据框的名字,列表[  ] 里是要删除的字段名,

axis=1表示在水平方向,因为默认drop方法是用来删除数据库中的行记录,

inplace=True表示会影响原数组

6,序列的apply ( )  方法  ,  apply( func= , )

7,序列使用.str后,可以转换为字符串类型

 常见的日期时间处理方法

year  返回年份

month  返回月份

day  返回月份中的日

hour 返回时

minute 返回分钟

second 返回秒

date 返回日期

time 返回时间

dayofyear 返回年中的第几天

dayofweek 返回周几(0-6)

quarter   返回第几季度

weekofyear 返回年中第几周

weekday_name 返回具体的周几名称

days_in_month  返回月中多少天

示例:

import pandas as pd
dates = pd.to_datetime(pd.Series(['1989-8-18 13:14:55','1995-2-16']),format = '%Y-%m-%d %H:%M:%S')
print('返回日期值:\n',dates.dt.date)
print('返回季度:\n',dates.dt.quarter)
print('返回几点钟: \n',dates.dt.hour)
print('返回年中的天: \n',dates.dt.dayofyear)
print('返回年中的周:\n',dates.dt.weekofyear)
print('返回星期几的名称:\n',dates.dt.weekday_name)
print('返回月份的天数:\n',dates.dt.days_in_month)

out:

pandas 数据表中的字符与日期数据的处理的更多相关文章

  1. 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)

    从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...

  2. m_Orchestrate learning system---十四、数据表中字段命名规则

    m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...

  3. 转:Sql Server中清空所有数据表中的记录

    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍.   使用sql删除数据库中所有表是不难的 ...

  4. Sql Server中清空所有数据表中的记录

    Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 代码如下:exec sp_msforeachtable  @Command1 ='truncate table ?'删除所有数据 ...

  5. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

  6. 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

    使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...

  7. excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)

    将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...

  8. 在数据表中添加一个字段的SQL语句怎么写

    如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识.   通用式: alter table [表名] add [字段名] 字 ...

  9. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

随机推荐

  1. 第一章 Java快速入门

    1.1.安装开发环境 第一步:打开下载地址,下载对应平台的 JDK 安装包 第二步:打开下载软件,全部默认下一步傻瓜式安装 1.2.配置环境变量 第一步:配置JAVA_HOME 第二步:配置CLASS ...

  2. 提取txt文本有效内容

    原理: 1.使用足够多的垃圾邮件和非垃圾邮件的内容作为训练集 2.读取全部训练集 删除其中的干扰字符 [ ] ,* . 进行分词 删除长度为 1 的单个字符 3.统计全部训练集中每个有效词汇的出现次数 ...

  3. Python os.closerange() 方法

    概述 os.closerange() 方法用于关闭所有文件描述符 fd,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略.高佣联盟 www.cgewang.com 语法 clo ...

  4. P4383 [八省联考2018]林克卡特树 树形dp Wqs二分

    LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j ...

  5. Vue Router详细教程

    1.什么是路由 1.1路由简介 说起路由你想起了什么?路由是一个网络工程里面的术语. 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动. --- 维基百科 额,啥玩意? 没听 ...

  6. 你该知道的Docker-compose

    Docker-compose介绍 前几篇文章和小伙伴们,分享了使用Dockerfile来构建镜像,使用docker run等命令来手动启动镜像.docker stop停止镜像.docker kill杀 ...

  7. IdentityServer4 (3) 授权码模式(Authorization Code)

    写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...

  8. 微信小程序后台springboot+mybatis+mysql“采坑”集锦

    "采坑"错误集锦 1.service层 错误描述:2019-04-14 22:09:52.027 ERROR 8416 --- [nio-8082-exec-5] o.a.c.c. ...

  9. Maven常见异常及解决方法---测试代码编译错误

    [ERROR] Please refer to E:\maven\web_nanchang\target\surefire-reports for the individual test result ...

  10. 会话机制,Cookie和Session详解

    转载自:https://www.cnblogs.com/whgk/p/6422391.html 很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二 ...