Pandas将csv数据拆分成多列并保存
1.题目要求
小明从网上下载了一份csv数据,但是却发现是以竖线| 分割的,他想把这个文件处理成想要的格式
文件示例:
|Discount Band|Units Sold|Manufacturing Price|Sale Price|Gross Sales|Discounts| Sales|COGS|Profit|Date|Month Number|Month Name|Year|Name
0|None|1618.5|3|20|32370.0|0.0|32370.0|16185.0|16185.0|2014-01-01|1|January|2014|Government,Canada,Carretera
2.按照对应拆分格式读取文件
read_csv读文件方式,默认是以逗号“,”作为分割符,若是以其它分隔符,比如制表符“/t”,则需要显示的指定分隔符。
pd_read_csv(filename,'/t')
但如果遇见某个字段包含了”/t”的字符,比如网址“www.xxx.xx/t…”,则也会把字段中的“/t”理解为分隔符。
但是如果在调用函数时,指定参数名,则不存在该问题。即如下:
read_csv(filename,sep='/t')
3.拆分指定字段
注意到这里的Name字段,里面有用逗号分割的三列合并到了一起,例如:Government,Canada,Carretera 我们现在想把这个字段分开成三个字段,应该如何操作呢?
使用str属性常用的split()操作。这里应该注意的是,str只对Series进行操作。
expand=True
参数将字符串拆分成多列,返回一个数据框。
如果不设定为True的话,则会得到一个Series,如下:
4.将df与df2合并
原表格按照列方向删除Name列,然后拼接df2水平连接。
参考引用:
5.修改列名
修改列名有两种方法。
#1.columns属性修改列名a、b为A、B
df.columns=['A','B']
#2.调用rename,将a改为A
df.rename(columns={'a':'A'},inplace=True)
本文使用第二种