gpt4 book ai didi

Python:获取数据框中多个数组的逐元素平均值

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:03 25 4
gpt4 key购买 nike

我有一个 16x10 Pandas 数据框,每个单元格中有 1x35000 个数组(或 NaN)。我想对每一列的行取元素明智的平均数。

      1       2       3       ...       10
1 1x35000 1x35000 1x35000 1x35000

2 1x35000 NaN 1x35000 1x35000

3 1x35000 NaN 1x35000 NaN

...

16 1x35000 1x35000 NaN 1x35000

为避免误解:取第一列中每个数组的第一个元素并取平均值。然后取第一列中每个数组的第二个元素,再次取平均值。最后我想要一个 1x10 数据帧,每列有一个 1x35000 数组。该数组应该是我以前的数组的逐元素平均值。

      1       2       3       ...       10
1 1x35000 1x35000 1x35000 1x35000

您是否有想法在没有 for 循环的情况下优雅地到达那里?

最佳答案

设置

np.random.seed([3,14159])
df = pd.DataFrame(
np.random.randint(10, size=(3, 3, 5)).tolist(),
list('XYZ'), list('ABC')
).applymap(np.array)

df.loc['X', 'B'] = np.nan
df.loc['Z', 'A'] = np.nan

df

                 A                B                C
X [4, 8, 1, 1, 9] NaN [8, 2, 8, 4, 9]
Y [4, 3, 4, 1, 5] [1, 2, 6, 2, 7] [7, 1, 1, 7, 8]
Z NaN [9, 3, 8, 7, 7] [2, 6, 3, 1, 9]

解决方案

g = df.stack().groupby(level=1)
g.apply(np.sum, axis=0) / g.size()

A [4.0, 5.5, 2.5, 1.0, 7.0]
B [5.0, 2.5, 7.0, 4.5, 7.0]
C [5.66666666667, 3.0, 4.0, 4.0, 8.66666666667]
dtype: object

如果你坚持你呈现的形状

g = df.stack().groupby(level=1)
(g.apply(np.sum, axis=0) / g.size()).to_frame().T

A B C
0 [4.0, 5.5, 2.5, 1.0, 7.0] [5.0, 2.5, 7.0, 4.5, 7.0] [5.66666666667, 3.0, 4.0, 4.0, 8.66666666667]

关于Python:获取数据框中多个数组的逐元素平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com