如何在分组的熊猫数据框中堆叠3-D数组?

时间:2020-01-17 00:28:10

标签: pandas numpy pandas-groupby

我有一个熊猫数据框,它由两列组成:一列字符串标识符和一列3-D数组。阵列已按ID分组。如何堆叠每个组的所有阵列,以便每个ID有一个堆叠的阵列?我的代码如下:

df1 = pd.DataFrame({'IDs': ids})
df2 = pd.DataFrame({'arrays':arrays})

df = pd.concat([df1, df2], axis=1)
grouped = df['arrays'].groupby(df['IDs'])

(我尝试了np.dstack(grouped),但未成功。)

1 个答案:

答案 0 :(得分:0)

我相信这就是您想要的:

df.groupby('IDs')['arrays'].apply(np.dstack).to_frame().reset_index()

它将apply np.dstack(...)函数用于共享ID的每组数组。

apply()函数返回一个pd.Series(以ID作为索引),因此我们然后使用to_frame()从中创建一个DataFrame,然后使用reset_index()将ID返回为一列。

(注意:apply()的文档讨论了如何使用agg()来提高效率,但是不幸的是,似乎无法将agg()与返回ndarray的函数一起使用,例如np.dstack。在这种情况下,agg()希望将该数组视为多个对象,而不是一个对象,而是一个序列。。。我的尝试导致了一个异常,内容为“函数不会减少”。)