【发布时间】:2017-03-09 10:07:25
【问题描述】:
看来我不明白 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 对象是主要问题。
【问题讨论】: