python - Pandas groupby 和 qcut

标签 python group-by pandas

有没有一种方法可以构造 Pandas groupby 和 qcut 命令以返回具有嵌套图 block 的一列?具体来说,假设我有 2 组数据,我希望将 qcut 应用于每组,然后将输出返回到一列。这类似于 MS SQL Server 的允许按 () 分区的 ntile() 命令。

     A    B  C
0  foo  0.1  1
1  foo  0.5  2
2  foo  1.0  3
3  bar  0.1  1
4  bar  0.5  2
5  bar  1.0  3

在上面的数据框中,我想在对 A 进行分区以返回 C 时将 qcut 函数应用于 B。

最佳答案

import pandas as pd
df = pd.DataFrame({'A':'foo foo foo bar bar bar'.split(),
                   'B':[0.1, 0.5, 1.0]*2})

df['C'] = df.groupby(['A'])['B'].transform(
                     lambda x: pd.qcut(x, 3, labels=range(1,4)))
print(df)

产量

     A    B  C
0  foo  0.1  1
1  foo  0.5  2
2  foo  1.0  3
3  bar  0.1  1
4  bar  0.5  2
5  bar  1.0  3

关于python - Pandas groupby 和 qcut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19403133/

相关文章:

python - numpy 中的多个插入,其中配对元素没有潜台词

python - 这是一个系列还是数据框?

python - 从命令行查找数字文件的总和

python - Django - 模型中的时间戳字段

python - 将 value-dict 重新映射到 Pandas 中的列

group-by - 连接 pig 的每个字段?

python - Spark MinMaxScaler 在数据帧上

python - 使用 interp1d 时,数组末尾的 NaN 会逐渐出现

mysql - 如何对 sql select 语句进行排序,以便正确显示排行榜?

python - 如何在 Pandas 数据框列中搜索特定文本?