python - GroupBy 和 Cut in Pandas

标签 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 在一行或两行中完成而不使用循环。

最佳答案

我是这样做的:

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

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

相关文章:

python - 如何使包含文件路径的Python脚本独立可执行且可导入?

python - 是否有适用于 Windows 7 64 位的 M2Crypto 安装程序?

python - 无法使用 Python 读取服务器上的 UDP 数据包

Python 删除某些文件扩展名

python - 如何使用循环或并行计算将大数据输入python pandas?

python - 如何根据不在列表中的索引选择数据框

python - 如何从列表类别中对 pandas 数据框进行排序?

python - 在生产中训练机器学习

python - pandas 中的数据框子

python - 转换 timedelta hh :mm to seconds