Pandas groupby and qcut

匿名 (未验证) 提交于 2019-12-03 01:11:01

问题:

Is there a way to structure Pandas groupby and qcut commands to return one column that has nested tiles? Specifically, suppose I have 2 groups of data and I want qcut applied to each group and then return the output to one column. This would be similar to MS SQL Server's ntile() command that allows 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 

In the dataframe above I would like to apply the qcut function to B while partitioning on A to return C.

回答1:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!