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)

本文使用第二种

发布于 2020-04-11 16:15

文章被以下专栏收录