我有一个数据框 df,其中有两列。我想按一列进行分组,并聚合属于同一组的列表,通过获取“平均列表”(所有列表元素的平均值),如下所示:
列表始终具有相同的固定长度。期望输出应如下所示:
column_a, column_b
1, [1,2,3]
1, [2,5,1]
2, [5,6,6]
3, [2,0,1]
3, [4,2,3]
列表始终具有相同的固定长度。期望输出应如下所示:
group, avg_list
1, [1.5,3.5,2]
2, [5,6,6]
3, [3,1,2]
我知道可以在dataframe上使用groupby,然后聚合它,但我不确定该在代码的agg部分中放什么。
df.groupby('column_a').agg(?)
我会感激任何建议。
TypeError: cannot perform reduce with flexible type
”...因此,我将代码从np.array(x.tolist())
更改为np.array(x.tolist()).astype(np.float)
以解决问题。 - David Ericksonliteral_eval
转换列。这一行代码df["column_b"] = df.column_b.apply(lambda s: list(ast.literal_eval(s)))
将字符串转换为列表。 - DavideBrex