发现问题
文本文件: 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读取之后,该条数据堆在了第一列。
我们可以先使用半角逗号分隔符读取大部分数据,然后通过循环,单独对每一条数据进行判断,找到不是以半角逗号作为分隔符的“异常数据”,使用半角分号对该数据进行切分,然后再使用方法,设置index=,存入到原先的数据行。
文件&代码
Python程序文件:
# 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