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}))