首页 > 解决方案 > pandas :通过减少一个大系列的一系列系列

问题描述

我有一个 int 系列,比如这个:

ages = pd.DataFrame(np.array([100, 107,99,98,65,45,32,18,66,69, 74,83,81,67, 101, 94, 52,90]), columns=["age"])

我的目标是在一个数组中创建几个系列。每个系列应仅包含一个区间中的值。

例如,array_series[0] 将返回:

    age
0   100
1   107
2   99
3   98
4   101
5   94
6   90

array_series[1] 将返回:

    age
0   83
1   81

ETC...

我尝试过(但失败了)两个选项:

长话短说:ValueError:一个系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

长话短说,卷土重来:ValueError:操作数无法与形状一起广播 (16,) (6,1) (10,1)

我应该考虑什么其他选择?

编辑:数组有严格的间隔,如下所示:* array_series[0]:高于 90 的值 *array_series[1]:80 到 90 之间的值 *array_series[2]:70 到 80 之间的值 *array_series[3]:介于60 和 70 * array_series[4] :最后,低于 60 的值

标签: pythonarrayspandasnumpy

解决方案


解决此问题的一种方法是pd.cutand groupby()

bins = pd.cut(ages['age'], bins=range(0,100))

for r, d in ages.groupby(bins)['age']:
    print(r)
    print(d)

推荐阅读