我有一个大小为20x20的数据帧(类型为pandas.core.frame.DataFrame(。数据帧中的 400 个单元格中的每一个都包含一个包含值的 LIST。我想单独计算每个列表(单元格(的值的平均值。数据帧如下所示:
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] .
. .
.
我的问题是,如何使用矩阵中的值计算每个单元格/列表的平均值?
通过矩阵,如果您指的是熊猫数据帧,并且通过 400 的单元格,我假设您是指 400 列和行(或其中之一(。在 pandas (python( 中,您可以像这样计算平均值:
dataframe['x'] = dataframe['x'].apply(lambda x: sum(x)/len(x))
在这里,.apply(( 允许您将函数应用于整个列或数据帧,而 lambda允许您遍历每一行。 值x是一个单元格(列表(,您可以在其上使用 Sum(( 和 len(( 等 Python 函数来计算平均值/平均值。
还有其他几种方法可以做到这一点,但如果有帮助,请告诉我。
更新所有列:
对所有数据帧列执行此操作的快速方法是:
for column in dataframe.columns:
dataframe[column] = dataframe[column].apply(lambda x: sum(x)/len(x))
以下是使用applymap
将函数应用于数据帧的每个单元格的方法:
import numpy as np
dfmean = df.applymap(np.mean)
print(dfmean)
col1 col2 col3
0 2.5 2.5 2.5
示例数据
df = pd.DataFrame({'col1': [[1,2,4,3]], 'col2': [[1,2,4,3]], 'col3': [[1,2,4,3]]})