您的位置:首页 > 编程语言 > Python开发

Python数据清洗之Dataframe中不同分隔符数据的清洗

2018-03-06 18:13 267 查看

发现问题

文本文件: test_file.txt

id,电影名称,上映时间
001,《红海行动》,2018-02-16
002,《厉害了,我的国》,2018-03-02
003;《闺蜜2》;2018-03-02
004,《捉妖记2》,2018-02-16
005,《西游记女儿国》,2018-02-16


我们使用pd.read_csv读取文件的时候,默认分隔符为半角逗号,当然,我们也可以使用sep指定分隔符。

笔者在一次使用python处理数据时,遇到了不同分隔符的情况,大部分数据使用半角逗号作为分隔符,有几条数据使用半角分号作为分隔符,转换成dataframe之后,使用半角分号作为分隔符的数据就缩至一列,其他列为空。

处理思路

通过观察数据,我们发现大部分数据使用的是半角逗号作为分隔符,只有一条数据使用半角分号作为分隔符,使用pd.read_csv读取之后,该条数据堆在了第一列。

我们可以先使用半角逗号分隔符读取大部分数据,然后通过循环,单独对每一条数据进行判断,找到不是以半角逗号作为分隔符的“异常数据”,使用半角分号对该数据进行切分,然后再使用pd.Series方法,设置index=data.columns,存入到原先的数据行。

文件&代码

Python程序文件: test.py

# encoding: utf-8
import pandas as pd
data = pd.read_csv('test_file.txt', sep=',')
for i in range(len(data)):
if len(data.iloc[i, 0]) > 3:  # 通过判断字长,得到异常数据
# 通过半角分号切分数据,并设置列索引,将数据存入原行
data.iloc[i] = pd.Series(data.iloc[i, 0].split(';'), index=data.columns)
print data


运行结果

id       电影名称        上映时间
0  001     《红海行动》  2018-02-16
1  002  《厉害了,我的国》  2018-03-02
2  003      《闺蜜2》  2018-03-02
3  004     《捉妖记2》  2018-02-16
4  005   《西游记女儿国》  2018-02-16
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: