我有一個資料框,其中包含一列日期時間、一列浮點數和一列整數,如下所示:
┌─────────────────────────┬───────────┬─────────────┐
│ time ┆ NAV_DEPTH ┆ coarse_ints │
│ --- ┆ --- ┆ --- │
│ datetime[ms] ┆ f64 ┆ i64 │
╞═════════════════════════╪═══════════╪═════════════╡
│ 2019-07-21 23:25:02.737 ┆ 3.424 ┆ 0 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-21 23:25:32.745 ┆ 2.514 ┆ 0 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-21 23:26:02.753 ┆ 2.514 ┆ 0 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-21 23:26:32.668 ┆ 2.323 ┆ 0 │
├?????????????????????????┼???????????┼?????????????┤
│ ... ┆ ... ┆ ... │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-23 21:24:16.383 ┆ 3.17 ┆ 689 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-23 21:24:46.390 ┆ 3.213 ┆ 689 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-23 21:25:16.396 ┆ 3.361 ┆ 689 │
├?????????????????????????┼???????????┼?????????????┤
│ 2019-07-23 21:25:46.402 ┆ 3.403 ┆ 690 │
整數列用于將資料集拆分為 8 個樣本的連續組以進行平均。我想對整數列執行 groupby 并獲取每個整數的平均深度和日期時間。它適用于中位數
df.groupby('coarse_ints').median()
┌─────────────┬─────────────────────────┬───────────┐
│ coarse_ints ┆ time ┆ NAV_DEPTH │
│ --- ┆ --- ┆ --- │
│ i64 ┆ datetime[ms] ┆ f64 │
╞═════════════╪═════════════════════════╪═══════════╡
│ 128 ┆ 2019-07-22 07:58:55.498 ┆ 207.8305 │
├?????????????┼?????????????????????????┼???????????┤
│ 672 ┆ 2019-07-23 20:15:29.461 ┆ 3.086 │
├?????????????┼?????????????????????????┼???????????┤
│ 328 ┆ 2019-07-22 21:19:08.667 ┆ 694.677 │
├?????????????┼?????????????????????????┼???????????┤
但是平均而言,日期時間全部為空
df.groupby('coarse_ints').mean()
┌─────────────┬──────────────┬────────────┐
│ coarse_ints ┆ time ┆ NAV_DEPTH │
│ --- ┆ --- ┆ --- │
│ i64 ┆ datetime[ms] ┆ f64 │
╞═════════════╪══════════════╪════════════╡
│ 232 ┆ null ┆ 96.967125 │
├?????????????┼??????????????┼????????????┤
│ 216 ┆ null ┆ 156.889 │
├?????????????┼??????????????┼????????????┤
groupby_dynamic看起來很有希望,但它需要一個固定的時間間隔。無論時間間隔如何,我都需要平均每 8 個樣本。
uj5u.com熱心網友回復:
如果您對日期時間的底層整數表示進行操作,然后在完成后回退,您可以mean通過常規獲得groupby(我承認這有點不直觀;)
df.with_column(
pl.col('time').to_physical()
).groupby(
by = pl.col('coarse_ints'),
maintain_order = True # or not :)
).mean().with_column(
pl.col('time').cast( pl.Datetime('ms') )
)
請注意,從物理/整數表示中回滾應包括原始時間單位(例如:'ms'、'us'、'ns'),以避免潛在的不正確縮放。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512092.html
標籤:约会时间蟒蛇极地
上一篇:我有一個與使用python和Beautifulsoup從網站上抓取日期相關的問題,就像`.split('.',"")
