【发布时间】:2026-02-16 03:40:02
【问题描述】:
我有一个 DataFrame,其中一列是 numpy 数字数组。例如,
import numpy as np
import pandas as pd
df = pd.DataFrame.from_dict({
'id': [1, 1, 2, 2, 3, 3, 3, 4, 4],
'data': [np.array([0.43, 0.32, 0.19]),
np.array([0.41, 0.11, 0.21]),
np.array([0.94, 0.35, 0.14]),
np.array([0.78, 0.92, 0.45]),
np.array([0.32, 0.63, 0.48]),
np.array([0.17, 0.12, 0.15]),
np.array([0.54, 0.12, 0.16]),
np.array([0.48, 0.16, 0.19]),
np.array([0.14, 0.47, 0.01])]
})
我想groupby id 列并通过获取数组的元素平均值来聚合。首先拆分数组是不可行的,因为它的长度为 300 并且我有 200,000 多行。当我执行df.groupby('id').mean() 时,我收到错误“没有要聚合的数字类型”。我可以使用df['data'].mean() 获得列表的元素平均值,所以我认为应该有一种方法来进行分组平均值。为了澄清,我希望输出是每个 ID 值的数组。结果数组中的每个元素应该是每个组中相应位置的元素值的平均值。在示例中,结果应为:
pd.DataFrame.from_dict({
'id': [1, 2,3,4],
'data': [np.array([0.42, 0.215, 0.2]),
np.array([0.86, 0.635, 0.29500000000000004]),
np.array([0.3433333333333333, 0.29, 0.26333333333333336]),
np.array([0.31, 0.315, 0.1])]
})
有人可以建议我如何做到这一点吗?谢谢!
【问题讨论】:
-
结果应该是什么样的?
标签: python pandas dataframe numpy