我想将每个组按50%的分位数划分在一个极点数据帧中.

代码不起作用:

df.select(pl.col('Value')) / df.groupby('Group').quantile(.5, 'linear')

包含以下数据帧

df = pl.DataFrame(
    [
        ["A", "A", "A", "A", "B", "B", "B", "B"],
        [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
    ],
    columns=["Group", "Value"],
)

我预计会有以下结果

Group Value
A 0.4
A 0.8
A 1.2
A 1.6
B 0.769
B 0.923
B 1.077
B 1.231

作为结果,我也对一个系列感到满意,只要我能再次将其连接回原始数据帧.

推荐答案

可以将窗口函数与over("Group")一起使用,而不是groupby

quantile = pl.col("Value").quantile(.5, 'linear').over("Group")

df.with_column(
    pl.col('Value') / quantile
)
┌───────┬──────────┐
│ Group ┆ Value    │
│ ---   ┆ ---      │
│ str   ┆ f64      │
╞═══════╪══════════╡
│ A     ┆ 0.4      │
│ A     ┆ 0.8      │
│ A     ┆ 1.2      │
│ A     ┆ 1.6      │
│ B     ┆ 0.769231 │
│ B     ┆ 0.923077 │
│ B     ┆ 1.076923 │
│ B     ┆ 1.230769 │
└───────┴──────────┘

Python相关问答推荐

如何使用使用来自其他列的值的公式更新一个rabrame列?

使用Openpyxl从Excel中的折线图更改图表样式

Numpyro AR(1)均值切换模型抽样不一致性

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

获取PANDA GROUP BY转换中的组的名称

如何从比较函数生成ngroup?

用0填充没有覆盖范围的垃圾箱

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格

Numpy`astype(Int)`给出`np.int64`而不是`int`-怎么办?

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)

使用_in链接操作管道传输的中间结果是否可用于链中的后续函数?

排除NRRD文件中的多切片卷加载问题

从语法生成后出现Antlr4 Python运行时错误

更改我的NN中的隐藏层数会导致错误

Python开发依赖项

如何避免在PIL中绘制文本时创建透明部分?

一种处理Django查询集数据的轻量级方法

如何才能将文本文件分成多列,但仅限于特定的行?

使用CSS Select 器和::before抓取不会显示文本

游程编码产生错误的结果