다른 DataFrame 행 필터를 기반으로 열을 만드는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-02-09 13:30:04
앞으로
535명이 탐색했습니다.

如何基于其他 DataFrame 行过滤器创建列?

질문 내용

"time"이라는 시간별 날짜/시간 열이 포함된 "hourly_data"라는 지연 프레임이 있습니다. 또한 "start"(미래 기간의 시작 날짜/시간) 및 "end"(미래 기간의 종료 시간)라는 두 개의 날짜/시간 열을 포함하는 "future_기간"이라는 데이터프레임이 있습니다. 중요한 것은 이러한 미래 기간이 겹치지 않는다는 것입니다.

hourly_data 지연 프레임에 대해 "기간"이라는 열을 생성하고 싶습니다. hourly_data의 시간 열 값은 기간(future_기간 데이터 프레임 행, 기간이 10개인 경우 0~9)을 기준으로 int 값이 있어야 합니다. 값은 future_기간의 시작 및 끝 열 값.

저는 다음을 시도했습니다:

으아악

하지만 이렇게 하면 오류가 발생합니다. typeerror: values 인수

에 대해 지원되지 않는 유형 'expr'을 사용하여 시리즈 생성자를 호출하는 중입니다.

내가 이루고 싶은 것: 입력:

으아악

출력:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!