我正在尝试对一组事物进行分组,并根据(最小和最大)值的最小值,最大值和平均值动态地在组内执行剪切。
我的数据集看起来像这样:
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在一行或两行中完成,而不是使用循环。
答案 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))