变换列表,以平均值(一步)
问题描述:
我有值的二维表的列表:变换列表,以平均值(一步)
[
[[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等等的数量并不总是相同的。
答
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
使用切片表示法[10:20]和编写一个计算列表平均值的函数。另外,你可能想要使用一个字典,而不是像这样的二维列表。 – user3080953
切片符号返回给定数量的元素,而不是那些满足要求的元素,在这种情况下,它们将它们打包成10个。 – PramusPL
这是正确的。你可以使用切片一次给你10个元素: '我在范围(N):a [i * 10:i * 10 + 10]' – user3080953