특정 값 (필터 창)이다 필터 행 :pyspark 데이터 프레임 API : 리드/래그 I이 같은 데이터 프레임이
id x y
1 a 1 P
2 a 2 S
3 b 3 P
4 b 4 S
I 행을 유지하려는 어디의 우위 가치 Y는 'S'내 결과 데이터 프레임이 될 수 있도록 우리가 가정 해 봅시다 : 나는 그것을 할 수 있어요
id x y
1 a 1 P
2 b 3 P
을 pyspark으로 다음과 같이
getLeadPoint = udf(lambda x: 'S' if (y == 'S') else 'NOTS', StringType())
windowSpec = Window.partitionBy(df['id'])
df = df.withColumn('lead_point', getLeadPoint(lead(df.y).over(windowSpec)))
dfNew = df.filter(df.lead_point == 'S')
하지만 여기서는 불필요한 열을 돌연변이 한 다음 필터링하는 중입니다. 내가 대신 수행 할 작업을
내가 리드를()를 사용하여 필터링 할 경우 이런 일이지만,이 동작하지 않습니다 : 내가 직접 필터가있는 결과를 얻을 수있는 방법에
dfNew = df.filter(lead(df.y).over(windowSpec) == 'S')
어떤 아이디어 창을 사용하고 있습니까?
이library(dplyr)
df %>% group_by(id) %>% filter(lead(y) == 'S')
죄송합니다 .... BTW - 주문 부는 장소 홀더입니다. 내 데이터에는 주문해야하는 '타임 스탬프'열이 있습니다. – Gopala
실제로 버그가 있습니다. 가장 간단한 해결 방법은'withColumn'을 사용하여 열을 추가하고 필터링에 사용하는 것입니다. – zero323
확인해 주셔서 감사합니다. 그래서 현재 가능한 해결책은 내가 할 수있는 최선의 방법인가? – Gopala