原始数据:
经过pandas.read_csv处理完导出的数据
缘由:
刚开始我也是苦思冥想却不得其法,不知道为啥好好的数据使用pandas读取后就变得不规整了,从网上搜索得知CSV(Comma-Separated Values),CSV文件默认用英文逗号做为列分隔符,经过将title中的数据取出来发现里面存在多个逗号,因而在写入另外一个csv中时,title原来为一个字段的内容被分割成了多个字段,进而致使了上面的问题,如今找到了问题,如何解决呢?
解决方法:经过写代码将逗号替换为其余字符,如空格,句号等字符
举例:python
import csv dirs = "F:\\data\\data.csv" with open(dirs, 'r', encoding='utf-8') as f: for index, line in enumerate(f): # 想要同时读取数据及其索引使用enumerate()方法 if index == 0: field = [['doi', 'type', 'isbn', 'container_isbn', 'author_n', 'title', 'cited_by', 'pub_year']] # 第一行写入字段 with open('data_update.csv', 'a', newline='') as file: writer = csv.writer(file) for row in field: writer.writerow(row) else: res = [] temp = line.split(',') a = list(map(lambda x: x.strip().strip('"'), temp)) # 高效for loop title = ' '.join(a[5:-2]) # 经过空格代替逗号,产生链接后的数据 del a[5:-2] # 删除原字段 a.insert(5, title) # 将新title字段插入列表中 res.append(a) with open('data_update.csv', 'a', newline='') as file: writer = csv.writer(file) for row in res: writer.writerow(row)
感想:当时是须要用pandas处理将近1亿条数据,由于里面数据不规整,因此我先将pandas.read_csv的数据设置为error_bad_lines=False,这样就能够忽略这种字段读入有问题的一行数据并且还会留一个索引,而后我经过python将这些索引提取出来,而后从原csv文件中根据索引将有问题的数据整条读入一个csv文件中再进行的处理web