ホームページ >バックエンド開発 >Python チュートリアル >他の DataFrame 行フィルターに基づいて列を作成するにはどうすればよいですか?
「hourly_data」という名前の遅延フレームがあり、これには「time」という時間ごとの日時列が含まれています。 また、「future_periods」というデータフレームにも、「start」(将来の期間の開始日時)と「end」(将来の期間の終了時刻)という 2 つの日時列が含まれています。重要なのは、これらの将来の期間が重複しないことです。
hourly_data の遅延フレームに「period」という列を作成したいのですが、期間 (future_periods データフレーム行、期間が 10 ある場合は 0 から 9) の時間列の値に基づいた int 値が必要です。hourly_data の値は次のとおりです。 future_periods の開始列値と終了列値の間。
次のことを試してみました:
リーリー しかし、これによりエラーが発生します: typeerror: Calling series constructionor with unsupported type 'expr' for values
argument
私が達成したいこと: 入力:### リーリー
出力:
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') )
リーリー
これで、2 つのステップで実行できるようになります。まず、time と将来の期間
id:
の間のリンクを計算します。
リーリー
リーリー
これを行うもう 1 つの方法は、duckdb Polars との統合に感謝します :
リーリー
以上が他の DataFrame 行フィルターに基づいて列を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。