2017-06-02 47 views
0

我有值的二维表的列表:变换列表,以平均值(一步)

[ 
[[12.2],[5325]], 
[[13.4],[235326]], 
[[15.9],[235326]], 
[[17.7],[53521]], 
[[21.3],[42342]], 
[[22.6],[6546]], 
[[25.9],[34634]], 
[[27.2],[523523]], 
[[33.4],[235325]], 
[[36.2],[235352]] 
] 

我想获得通过给定的步骤中定义的平均值的列表,以便为step=10它想这样:

[ 
[[10],[average of all 10-19]], 
[[20],[average of all 20-29]], 
[[30],[average of all 30-39]] 
] 

我该如何做到这一点?请注意,10s,20s,30s等等的数量并不总是相同的。

+0

使用切片表示法[10:20]和编写一个计算列表平均值的函数。另外,你可能想要使用一个字典,而不是像这样的二维列表。 – user3080953

+1

切片符号返回给定数量的元素,而不是那些满足要求的元素,在这种情况下,它们将它们打包成10个。 – PramusPL

+0

这是正确的。你可以使用切片一次给你10个元素: '我在范围(N):a [i * 10:i * 10 + 10]' – user3080953

回答

0
import pandas as pd 

df = pd.DataFrame((q[0][0], q[1][0]) for q in thelist) 
df['group'] = (df[0]/10).astype(int) 

现在df是:

 0  1 group 
0 12.2 5325  1 
1 13.4 235326  1 
2 15.9 235326  1 
3 17.7 53521  1 
4 21.3 42342  2 
5 22.6 6546  2 
6 25.9 34634  2 
7 27.2 523523  2 
8 33.4 235325  3 
9 36.2 235352  3 

然后:

df.groupby('group').mean() 

为您提供您所寻求的答案:

  0  1 
group    
1  14.80 132374 
2  24.25 151761 
3  34.80 235338