pandas 数据表中的字符与日期数据的处理
前面我们有学习过有关字符串的处理和正在表达式,但那都是基于单个字符串或字符串列表的操作。下面将学习如何基于数据框操作字符型变量。
同时介绍一下如何从日期型变量中取出年份,月份,星期几等,如何计算两个日期的时间差。
例题如下:

针对以上数据,读者可以在不看下方代码的情况下尝试着回答这些关于字符型及日期型的问题:
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 数据表中的字符与日期数据的处理的更多相关文章
- 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)
从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...
- m_Orchestrate learning system---十四、数据表中字段命名规则
m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...
- 转:Sql Server中清空所有数据表中的记录
如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍. 使用sql删除数据库中所有表是不难的 ...
- Sql Server中清空所有数据表中的记录
Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 代码如下:exec sp_msforeachtable @Command1 ='truncate table ?'删除所有数据 ...
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
- 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据
使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...
- 在数据表中添加一个字段的SQL语句怎么写
如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字 ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
随机推荐
- 干货 | 这可能全网最好的BatchNorm详解
文章来自:公众号[机器学习炼丹术].求关注~ 其实关于BN层,我在之前的文章"梯度爆炸"那一篇中已经涉及到了,但是鉴于面试经历中多次问道这个,这里再做一个更加全面的讲解. Inte ...
- three.js 制作一个三维的推箱子游戏
今天郭先生发现大家更喜欢看我发的three.js小作品,今天我就发一个3d版本推箱子的游戏,其实webGL有很多框架,three.js并不合适做游戏引擎,但是可以尝试一些小游戏.在线案例请点击博客原文 ...
- UltraISO制作系统安装盘
转载自: 原文链接 本文介绍使用UltraISO(软碟通)制作U盘启动来安装Win10系统,会装win10,其他的系统也大同小异,适用于当原系统损坏.崩溃.升级异常导致系统不能开机时重装,相对比< ...
- Django学习路28_ .html 文件继承及<block 标签>,include 'xxx.html'
在 templates 文件夹下创建 基类 base.html <!DOCTYPE html> <html lang="en"> <head> ...
- Django学习路17_聚合函数(Avg平均值,Count数量,Max最大,Min最小,Sum求和)基本使用
使用方法: 类名.objects.aggregate(聚合函数名('表的列名')) 聚合函数名: Avg 平均值 Count数量 Max 最大 Min 最小 Sum 求和 示例: Student.ob ...
- Django坑_01
写在前面的话,不是我不想用 Linux 去运行 Django Windows 的坑很多,可是 Linux 太慢了 以后遇到的坑,我都会发出来,供大家参考的. python manage.py runs ...
- PHP isset() 函数
isset() 函数用于检测变量是否已设置并且非 NULL.高佣联盟 www.cgewang.com 如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE. ...
- 使用pdf.js实现前端页面预览pdf文档,解决了跨域请求
pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责核心解析 官网地址:http://mozilla.github.io/pdf.js/ 下 ...
- ABAP 动态备份自建表数据到新表(自建表有数据的情况下要改字段长度或者其他)
当abaper开发好一个程序给用户使用一段时间后,发现某个字段的长度需要修改,但数据库表中已经存在很多数据,冒然直接改表字段可能会导致数据丢失,这种问题的后果可能非常严重. 所以我想到先复制出一个新表 ...
- 面试题:JVM 堆内存溢出后,其他线程是否可继续工作?
来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”.我看网上出现了很多不靠谱的答案.这道题其实很有难度,涉及的知识点有jvm内存分配. ...