计算表中每x行的平均值并创建新表 [英] Calculate average of every x rows in a table and create new table
问题描述
我有一个长数据表(〜200行×50列),我需要创建一个代码,该代码可以计算表中每两行和每一列的平均值,最终输出是一个新表平均值.在Excel中这样做显然很疯狂!我使用python3,并且知道一些类似的问题:">此处和此处.但是这些都无济于事,因为我需要一些优雅的代码来处理多个列并生成一个有组织的数据表.顺便说一句,我的原始数据表已使用pandas导入,并被定义为数据框,但找不到在pandas中执行此操作的简便方法.非常感谢您的帮助.
I have a long table of data (~200 rows by 50 columns) and I need to create a code that can calculate the mean values of every two rows and for each column in the table with the final output being a new table of the mean values. This is obviously crazy to do in Excel! I use python3 and I am aware of some similar questions:here, here and here. But none of these helps as I need some elegant code to work with multiple columns and produces an organised data table. By the way my original datatable has been imported using pandas and is defined as a dataframe but could not find an easy way to do this in pandas. Help is much appreciated.
表格的一个示例(简短版本)是:
An example of the table (short version) is:
a b c d
2 50 25 26
4 11 38 44
6 33 16 25
8 37 27 25
10 28 48 32
12 47 35 45
14 8 16 7
16 12 16 30
18 22 39 29
20 9 15 47
期望的均值表:
a b c d
3 30.5 31.5 35
7 35 21.5 25
11 37.5 41.5 38.5
15 10 16 18.5
19 15.5 27 38
推荐答案
您可以使用df.index//2
(或如@DSM所指出的那样,使用np.arange(len(df))//2
创建一个人工组,以便它适用于所有索引),然后使用groupby:
You can create an artificial group using df.index//2
(or as @DSM pointed out, using np.arange(len(df))//2
- so that it works for all indices) and then use groupby:
df.groupby(np.arange(len(df))//2).mean()
Out[13]:
a b c d
0 3.0 30.5 31.5 35.0
1 7.0 35.0 21.5 25.0
2 11.0 37.5 41.5 38.5
3 15.0 10.0 16.0 18.5
4 19.0 15.5 27.0 38.0
这篇关于计算表中每x行的平均值并创建新表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!