xp虚拟机插入oracle数据中文乱码_Python处理数据常用方法(pandas版)3

5f572c27c1953238dd7abad70c49ab94.png

书接上回:

Tao:Python处理数据常用方法(pandas版)2​zhuanlan.zhihu.com
719bef1ab0667db20d6e21de4c64897b.png

本文为我日常工作中常用功能的代码块,可以满足绝大部分文本数据处理的需求。

首先导入常用的包

import pandas as pd

本文假设所使用的excel文件目录为 C:/Users/Administrator/Desktop

名称为 test.xlsx

df 为 定义好的Dataframe格式数据

27 保留(YYYY-MM-DD HH:MM:SS)格式中的日期,排除时间

df['时间']=pd.to_datetime(df['时间']).dt.normalize() 

源数据及数据格式:

ce19258da77e8364e199299a307adddc.png

修改后格式:

150108a3de87cb2ee6dee73e2c3289c6.png

28 保留一列中值为数字的行

df[df.金额.apply(lambda x: str(x).isnumeric())]

源数据:

9ef2a035320d8959d3673770f3e8ca59.png

修改后:

de2d8f2dc42043272246a736113a6f49.png

29 将存中文数据的dataframe保存到csv中并不乱码

df.to_csv(r'C:/Users/Administrator/Desktop/test.csv',index=False,encoding='utf_8_sig')

源数据:

4ce794cd3e9eefaa50595b5132f3187b.png

导出后:

7832b9160f1eef0483685512776db3c6.png

393a5f3008883d609856992efd5ba0a4.png

添加encoding='utf_8_sig'后:

65e09a5efe6d127b272228f7b314e5bf.png

f427eb3e8628667f233a78a888a878eb.png

可正常显示中文

30 按照指定字符分列

 df = df.drop('A', axis=1).join(df['A'].str.split('+', expand=True).reset_index(drop=True))

源数据:

4a7215cc1bc3c30c8d90c700a33c0ee2.png

分列后:

079d1bb981e75d3a1b8b4beb64a319e8.png

分列后表头的顺序会变,记得调整顺序和修改列名

31 将dataframe保存至csv文件中,并保持中文

df.to_csv(r'C:UsersAdministratorDesktop目标文件.csv',encoding='utf_8_sig')

先创建一个dataframe:

409f1ec038901c86b4e56aa382214ae5.png

如果直接将其保存成csv,中文会变成乱码:

d106f77d151f49420d8f98afc3e6ab6d.png

加上 encoding='utf_8_sig' 参数后,中文显示正常

bf8645176d4f977c5091c3f1ad0232b2.png

9f586e6b9eb02e07683b081a156c81d3.png

32 将其他格式的数值转化为日期

df['日期']=pd.to_datetime(df['日期'],format="%Y%m%d")

3361c923ffa879c8adeea018daccbcf0.png

0dc541ce1de2f8fc05d8e8e8e28535c7.png

此时注册日期字段为字符串格式

使用to_datetime()方法:

36c47d9830e60e2115ef653576906713.png

f8b2b163f3b5eaba869a25873fe33c0b.png

成功将其转化为日期格式

33 将timedelta格式日期转化为数字

df['使用周期'] = df['使用周期'].map(lambda x: x.days)

参考上一个例子,除了注册日期外我又加了最后登录日期,两个日期之差即为用户的使用周期

695af6da2cb423c7a1123a56b817cf2e.png

这时候 使用周期 这一列的数据格式为 timedelta64 ,无法直接和数字做比较

8f36b4f24bcf81071409dce3789bab52.png

使用timedelta模块自带的days属性可以获得数值型的天数

a7a7292bc7d0a4417bfdcb65476f0ba5.png

34 在DataFrame的指定位置插入指定的一列

DataFrame.insert(loc,column,value,allow_duplicates=False)

loc:想要插入的位置
column:插入的列的列名
value:插入的列的值
allow_duplicates:是否允许重复插入,默认为否

现在有两个dataframe:

第一个login_date:

0e1b5452e4733f7cf439d632c8b65a7b.png

第二个df:

0bb32591be06a3c65f1f932150732edd.png

现在讲login_date插入到df的第二列中:

6ee5929b2d3353cb8bd1a17bb06c68e1.png

注意第二列的索引是1

这篇先更这么多吧,点赞破20开始下一期~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值