Pandas按组和qcut

38

有没有一种方法可以结构化Pandas groupby和qcut命令,以返回一个具有嵌套瓷砖的列?特别是,假设我有2组数据,并且我想对每个组应用qcut,然后将输出返回到一列。这类似于MS SQL Server的ntile()命令,它允许Partition by()。

     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
在上面的数据框中,我想对B应用qcut函数,同时在A上进行分区,以返回C。
1个回答

75
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)
产生(yields)
     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

如果出现以下错误怎么办?KeyError:2, 我只有两列数据,按照一列进行分组,另一列进行分箱,所以会出现这个错误。 - ggupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接