1

약 20k 행을 포함하는 DataFrame이 있습니다.스파크 행 삭제

데이터 세트에서 무작위로 186 개의 행을 삭제하고 싶습니다.

문맥을 이해하려면 - 누락 된 데이터에 대한 분류 모델을 테스트하고 있으며 각 행에는 유닉스 타임 스탬프가 있습니다. 186 행은 3 초에 해당합니다. (초당 62 행의 데이터가 있습니다.)

내 목표는 데이터가 스트리밍 될 때 데이터가 초 동안 누락 될 가능성이 있습니다. 시간 창에서 피쳐를 추출하므로 누락 된 데이터가 모델 성능에 미치는 영향을보고 싶습니다.

이 방법을 사용하면 rdd으로 변환하고 filter 함수를 사용하여 필터 함수 내부에 논리를 넣는 것이 가장 효과적이라고 생각합니다.

dataFrame.rdd.zipWithIndex().filter(lambda x:)

하지만이 논리와 붙어 있어요 - 어떻게이 구현합니까? 이런 식으로 할

답변

3

시도를 (PySpark 사용) :

import random 
startVal = random.randint(0,dataFrame.count() - 62) 
dataFrame.rdd.zipWithIndex()\ 
      .filter(lambda x: not x[<<index>>] in range(startVal, startVal+62)) 

이 작동합니다!

+0

우수하고 매우 우아합니다! – gbhrea

+0

안녕하세요 @ 티아 고, 또 다른 후속 질문이 있습니다. 열로 필터링하고 싶습니다. 예를 들어, 내 열 중 하나가 10 초 분량의 행을 삭제하는 타임 스탬프입니다. 10 초를 지우려면'.filter ("startVal, startVal + 10))에'timestamp"를 추가하려고 시도했지만 작동하지 않습니다. – gbhrea

+0

귀하의 칼럼은 Int입니까? 또는 dataFrame의 타임 스탬프 유형입니까? –