팬더 데이터 프레임에로드해야하는 propitiatory 커서 (arcpy.da.SearchCursor) 객체가 있습니다.팬더 - read_csv를 사용하여 Generator 객체에서 Dataframe 만들기
Python에서 생성기 객체에 대해 예상하는대로 next(), reset()을 구현합니다.
화려한 게시물 인 stackexchange에 다른 게시물을 사용하여 파일 생성기처럼 작동하는 클래스를 만들었습니다. 이것은 chunkksize가 설정되지 않은 기본 경우에 적용되지만 각 데이터 프레임에 대한 청크 크기를 설정하면 Python이 충돌합니다.
내 생각에 n = 0을 구현해야 x 개의 행이 반환되지만 지금까지는 잘못되었습니다.
발전기를 사용하여 데이터 프레임을로드 할 수 있도록 클래스를 구현하는 올바른 방법은 무엇입니까? 내 데이터 세트가 크기 때문에 chunkksize를 사용해야합니다.
그래서 의사 코드는 다음과 같습니다 내가 팬더 버전 0.16.1 및 파이썬 2.7.10을 사용하고customfileobject = Reader(cursor)
dfs = pd.read_csv(customfileobject, columns=cursor.fields,
chunksize=10000)
.
등급 이하 :
class Reader(object):
"""allows a cursor object to be read like a filebuffer"""
def __init__(self, fc=None, columns="*", cursor=None):
if cursor or fc:
if fc:
self.g = arcpy.da.SearchCursor(fc, columns)
else:
self.g = cursor
else:
raise ValueError("You must provide a da.SearchCursor or table path and column names")
def read(self, n=0):
try:
vals = []
if n == 0:
return next(self.g)
else:
# return multiple rows?
for x in range(n):
try:
vals.append(self.g.next())
except StopIteration:
return ''
except StopIteration:
return ''
def reset(self):
self.g.reset()
한 번에 하나의 항목 만 읽으려면'read (self)'를 구현하면됩니까? – ptrj
나는'pd.read_csv'를 사용한다고 가정한다 :'pd.from_csv'는'chunksize' 인수를 허용하지 않는다. –
@ptrj - python.exe가 충돌합니다. –