pandas读取2000w行csv文件

import json
import pandas as pd
def print_csv(src_csv,tgt_csv):
	#csv_file = open(src_csv,encoding='utf-8')
	g = open(tgt_csv, 'w', encoding='utf-8')
	reader = pd.read_csv(src_file, iterator=True)
	loop = True
	chunkSize = 500000 #文件的分割行数
	num_line = 0
	sum_line = 0 #记录总行数
	while loop:
		try:
			if sum_line % 500000 == 0:
				print("第%d行" % sum_line)
			lines = reader.get_chunk(chunkSize)
			#print(lines) #用小文件输出,查看结果
			for i in range(len(lines)):
				real_line = num_line * chunkSize + i
				dic = {'id':'', 'text':''}
				sum_line += 1
				num = lines['classification'][real_line] #IPC分类号
				abs = lines['abs'][real_line] #专利摘要
				
				if str(num)=='nan' or str(abs)=='nan':
					continue #若为空,则跳过
				#print(num)
				#print(abs)
				dic['id'] = num
				dic['text'] = abs
				json_data = json.dumps(dic, ensure_ascii=False)
				g.write(json_data + '\n')
			num_line += 1
		except StopIteration:
			loop = False
			print("Iteration is stopped")
	g.close()

if __name__ == '__main__':
	src_csv = 'patent.csv'
	tgt_csv = 'new_patent.json'
	print_csv(src_csv, tgt_csv)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值