Python 如何在pandas中展平具有相似索引的行?

Python 如何在pandas中展平具有相似索引的行?,python,pandas,numpy,Python,Pandas,Numpy,我有一个像 df = pd.DataFrame({'a':[np.array([5,6]),6,np.array([8,10]),7],'b':[np.array([7,8]),9,np.array([15,10]),7]},index=[0,0,1,1]) 0 1 2 3 0 [5, 6] [7, 8] 6 9 1 [8, 10] [15, 10] 7 7 因此,如何使用apply,以这样的方式,我最终将具有相似索引的单元格展平在同一列下 a

我有一个像

df = pd.DataFrame({'a':[np.array([5,6]),6,np.array([8,10]),7],'b':[np.array([7,8]),9,np.array([15,10]),7]},index=[0,0,1,1])
0 1 2 3 0 [5, 6] [7, 8] 6 9 1 [8, 10] [15, 10] 7 7 因此,如何使用apply,以这样的方式,我最终将具有相似索引的单元格展平在同一列下

a b 0 [5, 6,6] [7, 8,9] 1 [8, 10,7] [15, 10,7] a b 0 [5, 6,6] [7, 8,9] 1 [8, 10,7] [15, 10,7]
这是numpy.hstack的作业。然而,当值是多维的时,将groupby的输出放入数据帧总是有点棘手。将事物组合成一系列通常是有效的:

df.groupby(level=0).apply(lambda g: pd.Series({
    'a': np.hstack(g['a'].values), 
    'b': np.hstack(g['b'].values)
}))
当然,列举字典会更好

对于
n
列,听写理解会更好,即

df.groupby(level=0).apply(lambda g: pd.Series({i: np.hstack(g[i].values) for i in df.columns}))

你不相信我,我离你那么近。我相信你:) a b 0 [5, 6,6] [7, 8,9] 1 [8, 10,7] [15, 10,7]
df.groupby(level=0).apply(lambda g: pd.Series({
    'a': np.hstack(g['a'].values), 
    'b': np.hstack(g['b'].values)
}))
df.groupby(level=0).apply(lambda g: pd.Series({i: np.hstack(g[i].values) for i in df.columns}))