Pandas 如何在分组数据帧中堆叠三维阵列?

Pandas 如何在分组数据帧中堆叠三维阵列?,pandas,numpy,pandas-groupby,Pandas,Numpy,Pandas Groupby,我有一个由两列组成的熊猫数据帧:一列是字符串标识符,另一列是三维数组。数组已按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(分组

我有一个由两列组成的熊猫数据帧:一列是字符串标识符,另一列是三维数组。数组已按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(分组)
,但没有成功。)

我相信这就是您想要的:

df.groupby('IDs')['arrays'].apply(np.dstack).to_frame().reset_index()
它将
np.dstack(…)
函数分配给共享一个ID的每组数组

apply()

(注意:
apply()
的文档谈到使用
agg()
提高效率,但不幸的是,似乎不可能将
agg()
与返回数据数组的函数一起使用,例如
np.dstack
。在这种情况下,
agg()
希望将该数组视为多个对象、一个系列,而不是单个对象……我尝试使用它时出现了一个异常,称为“函数不减少”。)


我相信这就是你想要的:

df.groupby('IDs')['arrays'].apply(np.dstack).to_frame().reset_index()
它将
np.dstack(…)
函数分配给共享一个ID的每组数组

apply()

(注意:
apply()
的文档谈到使用
agg()
提高效率,但不幸的是,似乎不可能将
agg()
与返回数据数组的函数一起使用,例如
np.dstack
。在这种情况下,
agg()
希望将该数组视为多个对象、一个系列,而不是单个对象……我尝试使用它时出现了一个异常,称为“函数不减少”。)


我不知道这在这种情况下是否重要,但一般的“不成功”描述并不能帮助我们理解您的问题a也可能有帮助。几个主要问题。什么是分组的
?它不是
系列
数据帧
,尽管它可能包含一个或另一个
np.dstack
获取numpy数组或它可以生成的数组,并返回一个数组。这是一次裸体手术,不是熊猫手术。当你向它抛出
grouped
时,你到底在传递什么?我不知道它在这种情况下是否重要,但是一个一般的“不成功”描述并不能帮助我们理解你的问题a可能也会有帮助。几个引导性问题。什么是分组的
?它不是
系列
数据帧
,尽管它可能包含一个或另一个
np.dstack
获取numpy数组或它可以生成的数组,并返回一个数组。这是一次裸体手术,不是熊猫手术。当你向它抛出
分组的
时,你到底在传递什么?谢谢你的回复。您的解决方案正是我想要做的,非常感谢您的解释。谢谢您的回复。您的解决方案完全实现了我的目的,非常感谢您的解释。