이것은 Stackoverflow에 대한 재귀 질문이지만 아직 here 솔루션은 여전히 완벽하지는 않습니다. Yielding은 (나를 위해) 파이썬에서 사용하는 가장 복잡한 것들 중 하나이기 때문에 직접 고치는 법을 모른다.팬더 데이터 프레임을 존중하는 파이썬 목록을 평평하게 (불규칙하게) 나열합니다.
함수에 주어진 목록 중 하나의 항목이 팬더 데이터 프레임이면 flatten 함수는 데이터 프레임 자체 대신 헤더를 반환합니다. 당신은 명시 적으로 다음 코드를 실행하여 테스트 할 수 있습니다 :
import pandas
import collections
df = pandas.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
def flatten(l):
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
for sub in flatten(el):
yield sub
else:
yield el
을 그런 다음 참조 된 게시물에 주어진 함수를 호출하는 경우 : 내부 dataframe와 목록을 반환하는 대신
list(flatten([df])) #['A', 'B', 'C', 'D']
합니다. 데이터 프레임을 평평하게 유지하는 기능을 만드는 방법은 무엇입니까? 요소가 collections.Iterable
의 인스턴스이며,이 문자열이 아니라면 flatten
기능이 아래로 재귀 것이다
좋아요, 감사, 내가 검색 정확히 무엇인지. 원숭이 패치하는 법을 알았지 만 이것이 내가하는 일보다 더 우아하다. :) –