如果每个单元格都包含一个包含这些值的列表,那么如何计算矩阵中每个单元格的平均值

2024-04-23 13:53:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个20x20大小的数据框(类型pandas.core.frame.dataframe)。数据帧中的400个单元格中的每个单元格都包含一个带有值的列表。我想分别计算每个列表(单元格)的平均值。数据帧如下所示:

      x          y       z ...
x [1,2,4,3] [1,2,4,3] [1,2,4,3]

y [8,2,6,4] [1,2,4,3] [1,2,4,3]

z [1,2,4,9] [1,2,4,3] [1,2,4,3]
.
.
.

我想得到这样的结果:

    x    y   z ...                       x     y    z ...
x [10] [10] [10]                       x 10    10   10
                                       y 20    10   10
y [20] [10] [10]       or this:        z 16    10   10
                                       .
z [16] [10] [10]                       .
.                                      .
.

我的问题是,如何使用矩阵中的值计算每个单元格/列表的平均值


Tags: or数据core类型dataframepandas列表矩阵
2条回答

下面是一种使用^{}将函数应用于数据帧的每个单元格的方法:

import numpy as np

dfmean = df.applymap(np.mean)
print(dfmean)

   col1  col2  col3
0   2.5   2.5   2.5

Sample Data

df = pd.DataFrame({'col1': [[1,2,4,3]], 'col2': [[1,2,4,3]],  'col3': [[1,2,4,3]]})

对于矩阵,如果您指的是一个数据帧,而对于400个单元格,我假设您指的是400个列和行(或其中之一)。在pandas(python)中,您可以这样计算平均值:

dataframe['x'] = dataframe['x'].apply(lambda x: sum(x)/len(x)) 

这里,.apply()允许您在整个列或数据帧上应用函数,lambda允许您迭代每一行。值x是一个单元格(列表),您可以在其上使用诸如sum()和len()之类的python函数来计算平均值

还有其他几种方法可以做到这一点,但如果有帮助,请告诉我

UPDATE FOR ALL COLUMNS:

对所有dataframe列执行此操作的快速方法是:

for column in dataframe.columns:
    dataframe[column] = dataframe[column].apply(lambda x: sum(x)/len(x))

相关问题 更多 >