pandas groupby的实现 - 索引和切片

时间:2017-03-09 10:07:25

标签: python pandas dataframe

看起来我不能正确理解pandas groupby是如何工作的以及如何使用它。有人可以解释一下我做错了什么或如何处理我的问题? 我想基于不同的列提取一些数据。参见示例:

    Number Name  Param1    Param2    Param3
0        1    A       0  0.179264  0.565864
1        2    A       1  0.374258  0.985103
2        1    C       2  0.799988  0.855600
3        3    B       3  0.237612  0.290065
4        3    C       4  0.195463  0.232030
5        2    C       5  0.611886  0.712429
6        4    A       6  0.178465  0.056347
7        1    B       7  0.018789  0.393464
8        5    B       8  0.549566  0.457160
9        4    B       9  0.149801  0.590501
10       4    C      10  0.112857  0.327013
11       3    A      11  0.902660  0.670725
12       2    B      12  0.474427  0.104224
13       5    C      13  0.691259  0.620992
14       5    A      14  0.043179  0.028890

然后我想做一个涉及两个循环的操作。基本上,在这个例子中,我想打印参数(作为数组,但这不是问题)[Param1,Param2,Param3]每个名称引用每个数字。

所以期望的结果如下: 1号:[[0, 0.179264, 0.565864],[2, 0.799988, 0.855600],[7, 0.018789, 0.393464]] 2号:[[1, 0.374258, 0.985103],[5, 0.611886, 0.712429],[12, 0.474427, 0.104224]]等(然后我想绘制它们并使用“名称”进行标记。

这是代码:

for n in example.groupby('Number'):
    for name in example['Name']:
        params = np.array(example.loc[n['Name']==name,['Param1','Param2','Param3']])
        print 'Group:', n
        print 'Params:\n', params

但似乎我无法使用数据帧的groupby对象索引。此代码生成TypeError: tuple indices must be integers, not str。 我现在可能通过尝试解决它可能有多个错误,但它似乎是正确的索引和切片groupby对象是主要问题。

1 个答案:

答案 0 :(得分:1)

我不确定是否理解,但请尝试loop in groups

ID     | CLIENT_ID | ACCOUNT_NUM  | ...
------ | --------- | ------------ | ---
1      | 1         | "0012301230" |
2      | 1         | "0172456123" |
3      | 1         | "1234001234" |
4      | 1         | "6789134834" |
5      | 1         | "2378166341" |
...