ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pandas 数据表中的字符与日期数据的处理

2019-11-21 15:56:47  阅读:326  来源: 互联网

标签:字符 tel df datetime 数据表 birthday pd year 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后,可以转换为字符串类型

 

 

标签:字符,tel,df,datetime,数据表,birthday,pd,year,pandas
来源: https://www.cnblogs.com/tinglele527/p/11906085.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有