看起来我不能正确理解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对象是主要问题。
答案 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" |
...