Pandas 如何在分组数据帧中堆叠三维阵列?
我有一个由两列组成的熊猫数据帧:一列是字符串标识符,另一列是三维数组。数组已按ID分组。如何为每个组堆叠所有数组,以便每个ID都有一个单独的堆叠数组?我的守则如下: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(分组
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数组或它可以生成的数组,并返回一个数组。这是一次裸体手术,不是熊猫手术。当你向它抛出分组的时,你到底在传递什么?谢谢你的回复。您的解决方案正是我想要做的,非常感谢您的解释。谢谢您的回复。您的解决方案完全实现了我的目的,非常感谢您的解释。