GroupBy和Cut in Pandas

时间:2018-05-09 09:26:16

标签: python pandas

我正在尝试对一组事物进行分组,并根据(最小和最大)值的最小值,最大值和平均值动态地在组内执行剪切。

我的数据集看起来像这样:

Country     Value
Uganda       210
Kenya        423
Kenya        315 
Tanzania     780 
Uganda       124
Uganda       213
Tanzania     978 
Kenya        524 

我所期望的是每个值在哪个范围内,高于或低于中值:

Country      Value        Range
Uganda        210        (168.5, 213)
Uganda        124        (124, 168.5)
Uganda        213        (168.5, 213)
Kenya         423        (419.5, 524)
Kenya         315        (315, 419.5)
Kenya         524        (419.5, 524)
Tanzania      780        (780, 879)
Tanzania      978        (879, 980) 

如果我在迭代每个组的循环中执行此操作,我就能够实现此目的。我也能够根据整个数据集的最小值和最大值来实现切割,但不能单个组。但是,我想知道是否可以使用pandas在一行或两行中完成,而不是使用循环。

2 个答案:

答案 0 :(得分:1)

试试这个;

data['Range'] = data.groupby('Country').Value.apply(pd.cut, bins=2)

答案 1 :(得分:0)

我就这样做了:

df['range'] = df.groupby('country')[['value']].transform(lambda x: pd.cut(x, bins = 2).astype(str))
相关问题