python pandas使用一些协程

import pandas as pd

def coroutine(func):
	"""装饰器:向前执行到第一个`yield`表达式,预激`func`"""
	@wraps(func)
	def primer(*args,**kwargs):
		gen = func(*args,**kwargs)
		next(gen)
		return gen
	primer.__name__ = func.__name__
	primer.__dict__ = func.__dict__
	primer.__doc__  = func.__doc__
	return primer

@coroutine
def getd():
	grouped=pd.DataFrame()
	while True:
		chunk=yield grouped
		if chunk is None:
			break
		#chunk['cishu']=1
		chunkgrouped=chunk.groupby('somekey',as_index=False).sum()
		newchunk=pd.concat([grouped,chunkgrouped],ignore_index=True)
		grouped=newchunk.groupby('somekey', as_index=False).sum()
	return grouped

cor=getd()
chunks=pd.read_csv(path,low_memory=False,dtype='object',chunksize=10)
for chunk in chunks:
	cor.send(chunk)
try:
	cor.send(None)
except StopIteration as exc:
	result = exc.value
	print(result)

  

转载于:https://www.cnblogs.com/mahailuo/p/10209740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值