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

发现问题

文本文件: 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      《闺蜜22018-03-02
3  004     《捉妖记22018-02-16
4  005   《西游记女儿国》  2018-02-16

猜你喜欢

转载自blog.csdn.net/yuanxiang01/article/details/79461879