"time"이라는 시간별 날짜/시간 열이 포함된 "hourly_data"라는 지연 프레임이 있습니다. 또한 "start"(미래 기간의 시작 날짜/시간) 및 "end"(미래 기간의 종료 시간)라는 두 개의 날짜/시간 열을 포함하는 "future_기간"이라는 데이터프레임이 있습니다. 중요한 것은 이러한 미래 기간이 겹치지 않는다는 것입니다.
hourly_data 지연 프레임에 대해 "기간"이라는 열을 생성하고 싶습니다. hourly_data의 시간 열 값은 기간(future_기간 데이터 프레임 행, 기간이 10개인 경우 0~9)을 기준으로 int 값이 있어야 합니다. 값은 future_기간의 시작 및 끝 열 값.
저는 다음을 시도했습니다:
으아악하지만 이렇게 하면 오류가 발생합니다. typeerror: values
인수
내가 이루고 싶은 것: 입력:
으아악출력:
periods = pl.series(range(future_periods.height)) hourly_data = hourly_data.with_columns( ( pl.when(((future_periods.get_column('start') <= pl.col('time')) & (pl.col('time') <= future_periods.get_column('end'))).any()) .then(periods.filter(pl.series((future_periods.get_column('start') <= pl.col('real_time')) & (pl.col('real_time') <= future_periods.get_column('end')))).to_list()[0]) .otherwise(none) ).alias('period') )
일반적으로 말하면 부등식 조인이고, 귀하의 경우에는 범위 조인입니다. 이를 수행하는 한 가지 방법이 있습니다. 몇 가지 샘플 데이터를 만들어 시작해 보겠습니다.
으아악이제 두 단계로 이를 수행할 수 있습니다. 먼저 time
和未来时段 id
:
원본 데이터 프레임과 결합할 수 있습니다:
으아악이를 수행하는 또 다른 방법은 duckdb
感谢 与 polars
통합을 사용하는 것입니다.
위 내용은 다른 DataFrame 행 필터를 기반으로 열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!